Android讀寫文件基於Java的文件輸入輸出流


注:由於排版問題,現在重新修正

一、向本地默認地址存儲文件

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作為參數傳給文件輸出流的構造器,返回一個輸出流,后面的操作和前面的相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM