Android開發離不開對檔案的操作,下面來看下Android是怎麼操作其内置目錄檔案及外部sdcard資料的。
資源檔案:
/assets目錄下test.txt
/res/raw目錄下rawfile.txt
一、讀取assets目錄下的檔案
InputStream is = getResources().getAssets().open("test.txt");
Reader in = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(in);
String line = null;
while (null != (line = bufferedReader.readLine()) ){
System.out.println("assets file==========" + line);
}
bufferedReader.close();
in.close();
is.close();
由于assets下的檔案不會再R.java中生成相應的ID,是以Android提供了AssetManager的方法通路assets下的資源。
二、讀取raw目錄下的檔案(raw位于res目錄下,這個檔案需要手工建立)
is = getResources().openRawResource(R.raw.rawfile);
in = new InputStreamReader(is);
bufferedReader = new BufferedReader(in);
line = null;
while (null != (line = bufferedReader.readLine()) ){
System.out.println("rawfile==========" + line);
}
bufferedReader.close();
in.close();
is.close();
三、讀寫工程内部檔案
FileOutputStream fileOutputStream = openFileOutput("projectfile.txt", Context.MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("ooooooooooooooooooo");
bw.close();
osw.close();
fileOutputStream.close();
FileInputStream fileInputStream = openFileInput("projectfile.txt");
InputStreamReader isr = new InputStreamReader(fileInputStream);
char[] input = new char[fileInputStream.available()];
isr.read(input);
isr.close();
fileInputStream.close();
String str = new String(input);
System.out.println("project file=============" + str);
四、讀寫sdcard檔案
1、AndroidManifest.xml中添權重限控制
2、java操作代碼:
File file = Environment.getExternalStorageDirectory();//擷取sdcard路徑
if(file.exists()){//判斷是否存在sdcard
System.out.println("sdcard file path========" + file.getAbsolutePath());
File myfile = new File(file, "myfile_sdcard.txt");
myfile.createNewFile();
FileOutputStream fos = new FileOutputStream(myfile);
fos.write("AAAAAAAAAAa".getBytes());
fos.flush();
fos.close();
}
//讀取sdcard檔案
File file1 = new File(file, "myfile_sdcard.txt");
InputStream inputStream = new FileInputStream(file1);
Reader reader = new InputStreamReader(inputStream);
BufferedReader bufferedReader1 = new BufferedReader(reader);
String iline = null;
while(null != (iline = bufferedReader1.readLine())){
System.out.println("from sdcard myfile_sdcard.txt============" + iline);
}
bufferedReader1.close();
reader.close();
inputStream.close();
上述四種操作Android檔案的方式,各個處理方式都有所不同。
1、讀取assets目錄下的資源檔案時需要通過getResources().getAssets()方法擷取AssetManager的open方法來進行處理;
2、而讀取raw目錄下的資源檔案則通過getResources().openRawResource(R.raw.資源名稱)的方式來擷取;
3、讀寫工程其他目錄的檔案則通過openFileOutput和openFileInput來進行處理;
4、sdcard檔案的操作需要額外在AndroidManifest.xml中進行權限的聲明,并通過Environment.getExternalStorageDirectory()擷取sdcard的路徑,剩下的就是Java對檔案的操作了。