一、讀文件操作
Context.openFileInput(Stringname)打開一個與應用程序聯繫的私有文件輸入流。
當文件不存在時拋出FileNotFoundException
FileInputStreamin = this.openFileInput("test.txt");//打開文件"text.txt"
…
In.close();//關閉輸入流
二、寫文件操作
Context.openFileOutput(Stringname,int mode)開啓一個與應用程序聯繫的私有文件輸出流
當文件不存在時該文件將被創建,文件輸出流可以在添加模式中打開,這意味着新的數據將被添加到文件的末尾。
FileOutputStream out =this.openFileOutput("test2.txt,MODE_APPEND");
//打開文件"test2.txt"進行寫操作,使用MODE_APPEND再添加模式中打開文件
…
out.close();//關閉輸出流
eg:publicclass FileActivity extends Activity{
@Override
Public void onCreate(Bundle savedInstanceState){
FileOutputStream outStream= this.openFileOutput("lxt008.txt",Context.MODE_PRIVATE);
outStream.write("lxt008".getBytes());
outStream.close();
}
}
注意:
openFileOutput()方法的第一參數用於指定文件名,不能包含路徑分隔符“/”,如果文件不存在,Android會自動創建他,創建的文件保存在/data/data/<packagename>/files目錄,
如:/data/data/com.lxt008/files/lxt008.txt,通過點擊Eclipse菜單“Window”-“ShowView”-“Other”,在對話窗口 中展開android文件夾,選擇下面的File Explorer視圖,然後再File Explorer 視圖中展開/data/data/<packagename>/files目錄就可以看到該文件夾。
三、讀取靜態文件
要打開打包在程序中的靜態文件,使用Resource.openRawResource(R.raw.mydatafile);
該文件必須放在文件夾res/raw/中
InputStreamin =this.getResources().openRawResource(R.raw.my);
…//獲得Context資源
In.close();//關閉輸入流
eg:如果想打開/data/data/<packagename>/file目錄應用私有的文件,可以使用Activity提供openFileInput()方法。
FileInputStreaminStream = this.getContext().openFileInput("lxt008.txt");
Log.i("FileTest",readInstream(inStream));
或者直接使用文件的絕度路徑:
File file =new File("/data/data/com.lxt008/files/lxt008.txt");
FileInputStreaminStream = new FileInputStream(file);
Log.i("FileTest",readInStream(inStream));
Activity還提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用於獲取/data/data/<package name>/cache目錄
getFilesDir()方法用於獲取/data/data/<package name>/files目錄
以上的操作是對於安卓手機自帶內存空間上的。對於存儲空間不大的手機,你需要將大文件存放於手機內存卡上面:
應用程序訪問SDCard時,你需要申請訪問權限:
<!--在SDCard中創建與刪除的文件權限-->
<uses-premissionandroid:name="android.prremission.MOUNT_UNMOUNT_FILESYSTEMS">
<!--往SDCard寫如數據權限-->
<uses-premissionandroid:name="android.premission.WRITE_EXTERNAL_STORAGE">
要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。
If(Environment.getExternalStorageState().equals(Environment.MEDLA_MOUNTED)){
File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄
File savaFile = new File(sdCardDir,"lxt008.txt");
FileOutputStream outStream = new FileOutputStream(savaFile);
outStream.write("lxt008".getBytes());
outStream.close();
}
獲取SdCard目錄也可以這樣:
File sdCardDir = new File("/sdcard");//獲取SDCard目錄
File savaFile = newFile(sdCardDir,"lxt008.txt");
上面兩句可以合成一句:
FilesavaFile = new File("/sdcard/lxt008.txt");