注:由於排版問題,現在重新修正
一、向本地默認地址存儲文件
1 public void save(String filename, String content) throws Exception
2 {
3 FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
4 outStream.write(content.getBytes());
5 outStream.close();
6 }
首先創建一個文件輸出流對象,它的值等於上下文context調用openFileOutput()方法的返回值,這個openFileOutput()方法將為本應用打開指定的私有文件以供寫操作,如果當前文件不存在將創建一個。
方法的兩個參數分別指定了文件的名稱和讀寫模式,其中文件名稱不能包含路徑,文件的位置在:data/data/<package name>/files里面(這個目錄可以用getFilesDir()方法得到,類似的getCacheDir()方法可以得到和files同級的cache目錄)。讀寫模式分為4種基本模式,分別是:
MODE_PRIVATE或0 即私有模式:默認模式,文件只能被當前應用操作,而對其它應用透明。如果文件已經存在,新數據會把原有數據覆蓋。
MODE_APPEND或32768 即附加模式:文件只能被當前應用操作,而對其它應用透明。如果文件已經存在,新數據會添加在舊數據之后。
MODE_WORLD_READABLE或1 即讀模式:允許其他應用對本模式下創建的文件進行讀操作。
MODE_WORLD_WRITEABLE或2 即寫模式:允許其他應用對本模式下創建的文件進行寫操作。
如果允許其他應用對該文件讀和寫兩種操作,參數可以為Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE或者3,也就是讀,寫的組合。
然后調用輸出流對象的write()寫方法,其參數是字節類型,所以要把字符串類型轉換為字節,調用getBytes()方法。
最后記得關閉輸出流。
二、向SD卡存儲文件
1 public void saveToSDCard(String filename, String content) throws Exception
2 {
3 File file = new File(Environment.getExternalStorageDirectory(), filename);
4 FileOutputStream outStream = new FileOutputStream(file);
5 outStream.write(content.getBytes());
6 outStream.close();
7 }
首先在清單文件里配置操作SD卡的權限
1 <!-- 在SDCard中創建與刪除文件權限 -->
2 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
3 <!-- 往SDCard寫入數據權限 -->
4 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
要想將文件存放到SD卡上面,必須指定目錄,這時我們不再像之前一樣調用openFileOutput()方法,因為它存放的文件是位於手機本身“內存”里面的,利用File的構造函數可以傳入文件地址,有三種常用的,參數分別是目錄與文件名,絕對路徑,目錄路徑與文件名
1 public File(File dir, String name)
2 public File(String path)
3 public File(String dirPath, String name)
案例中通過Environment.getExternalStorageDirectory()方法獲得Android手機中擴展卡的根目錄,然后把file作為參數傳給文件輸出流的構造器,返回一個輸出流,后面的操作和前面的相同。