IO流(操作文件內(nèi)容): 字節(jié)流
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都做網(wǎng)站、網(wǎng)站制作、達川網(wǎng)絡(luò)推廣、成都小程序開發(fā)、達川網(wǎng)絡(luò)營銷、達川企業(yè)策劃、達川品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供達川建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:jinyejixie.com
參考:
AssetManager
assets 文件夾用于存儲應(yīng)用需要的文件,在安裝后可直接從其中讀取使用或者寫入本地存儲中
Android Studio 默認(rèn)不建立該文件夾,可以手動新建 : app - src - main - assets
或者,右鍵 main - New - Folder - Assets Folder
AssetManager 對象可以直接訪問該文件夾:
獲取方法:
使用函數(shù) open 可以打開 assets 文件夾中對象,返回一個 InputStream 對象:
open
獲取方法:
首先在百度手機助手或者在別的別的第三方下載工具里下載ireader,如圖所示。
2.下載下來軟件之后安裝在手機上。在手機文件管理器里找到pdf文件。
3.打開該文件,這時候自動會默認(rèn)使用ireader軟件打開。這時候會提示需要安裝pdf組件。
4.點擊確定之后會自動安裝pdf組件。安裝好之后,再次在文件管理器內(nèi)打開pdf文件。這時候就可以閱讀該文件了。
有的時候程序需要去對android的指定目錄或者全局目錄進行遍歷獲取其中的文件,但是獲取文件的時候可能會遇到無法列出文件夾中的文件的問題,這就是出現(xiàn)的問題,對于某個子文件夾進行獲取listFiles()的時候返回為NULL,也就是不允許列出文件夾中內(nèi)容。
這個是由于android中的安全機制的緣故,由于android繼承了Linux系統(tǒng)的傳統(tǒng),對于某個特定的目錄有用戶的權(quán)限,一共分為三種--可讀,可寫,可執(zhí)行;雖然說可以設(shè)置某個特定的目錄的權(quán)限,但是對于目錄里面的子目錄和子文件都可以進行權(quán)限的設(shè)置,也就是說出了根目錄權(quán)限之外,子目錄本身的權(quán)限也決定了子目錄可否訪問,這一點需要清楚了解,所以在判斷完了是否是目錄之外,還需要在進行l(wèi)istFiles()獲取File[]數(shù)據(jù)后判斷獲取的數(shù)組是否為空,如果為空的話,文件夾是不可訪問的。樣例代碼如下:
01 package net.nowamagic.file;
02 import java.io.File;
03 import java.util.ArrayList;
04 import java.util.HashMap;
05 import java.util.Map;
06 import android.util.Log;
07 /**
08 * @author
09 * function 用于掃描SD卡上的文件
10 *
11 */
12 public class FileScan {
13
14 private static final String TAG = "FileScan";
15 public HashMapString, String getMusicListOnSys(File file) {
16
17 //從根目錄開始掃描
18 Log.i(TAG, file.getPath());
19 HashMapString, String fileList = new HashMapString, String();
20 getFileList(file, fileList);
21 return fileList;
22 }
23
24 /**
25 * @param path
26 * @param fileList
27 * 注意的是并不是所有的文件夾都可以進行讀取的,權(quán)限問題
28 */
29 private void getFileList(File path, HashMapString, String fileList){
30 //如果是文件夾的話
31 if(path.isDirectory()){
32 //返回文件夾中有的數(shù)據(jù)
33 File[] files = path.listFiles();
34 //先判斷下有沒有權(quán)限,如果沒有權(quán)限的話,就不執(zhí)行了
35 if(null == files)
36 return;
37
38 for(int i = 0; i files.length; i++){
39 getFileList(files[i], fileList);
40 }
41 }
42 //如果是文件的話直接加入
43 else{
44 Log.i(TAG, path.getAbsolutePath());
45 //進行文件的處理
46 String filePath = path.getAbsolutePath();
47 //文件名
48 String fileName = filePath.substring(filePath.lastIndexOf("/")+1);
49 //添加
50 fileList.put(fileName, filePath);
51 }
52 }
53
54 }
1. 讀取操作
String path = "/sdcard/foo.txt";
String content = ""; //文件內(nèi)容字符串
//打開文件
File file = new File(path);
//如果path是傳遞過來的參數(shù),可以做一個非目錄的判斷
if (file.isDirectory()){
Toast.makeText(EasyNote.this, "沒有指定文本文件!", 1000).show();
}
else{
try {
InputStream instream = new FileInputStream(file);
if (instream != null) {
InputStreamReader inputreader = new InputStreamReader(instream);
BufferedReader buffreader = new BufferedReader(inputreader);
String line;
//分行讀取
while (( line = buffreader.readLine()) != null) {
content += line + "\n";
}
instream.close();
} catch (java.io.FileNotFoundException e) {
Toast.makeText(EasyNote.this, "文件不存在", Toast.LENGTH_SHORT).show();
} catch (IOException e) {
e.printStackTrace();
}
}
2. 寫入操作
String filePath = "/sdcard/foo2.txt";
String content = "這是將要寫入到文本文件的內(nèi)容";
//如果filePath是傳遞過來的參數(shù),可以做一個后綴名稱判斷; 沒有指定的文件名沒有后綴,則自動保存為.txt格式
if(!filePath.endsWith(".txt") !filePath.endsWith(".log"))
filePath += ".txt";
//保存文件
File file = new File(filePath);
try {
OutputStream outstream = new FileOutputStream(file);
OutputStreamWriter out = new OutputStreamWriter(outstream);
out.write(content);
out.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
已經(jīng)開啟了授權(quán)讀取本地文件權(quán)限,但是依然無法讀取本地有些文件,這個原因很簡單了。
application
android:allowBackup="true"
android:icon="@mipmap/logo128111"
android:label="@string/app_name"
android:roundIcon="@mipmap/logo128111"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:requestLegacyExternalStorage="true"
最關(guān)鍵的是要添加上 android:requestLegacyExternalStorage="true"這句就可以了。
分享文章:android讀取文件,android讀取文件夾里的圖片
標(biāo)題路徑:http://jinyejixie.com/article8/hojeip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、微信小程序、網(wǎng)站收錄、面包屑導(dǎo)航、手機網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)