Android檔案存取

來源:互聯網
上載者:User

  今天學習了Android的檔案存取技術,在Android的中很多時候需要用到檔案存取相關功能,即我們可以在手機或SD Card中存放我們期望放入的檔案、讀取檔案內容以及等操作來達到相應目的。

    檔案儲存體模式:

    1. Context.MODE_PRIVATE:為預設操作模式,代表該檔案是私人資料,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原檔案的內容,如果想把寫入的內容追加到原檔案中,可以使用Context.MODE_APPEND。

    2. COntext.MODE_APPEND:改模式會檢查檔案是否存在,存在就往檔案追加內容,否則就建立新檔案。

    

    Context.MODE_WORDL_REABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有許可權讀寫該檔案。

    3. Context.MODE_WORLD_REABLE:表示當前檔案可以被其他應用讀取。

    4. Context.MODE_WORLD_WRITEABLE:表示當前檔案可以被其他應用寫入。

 

    如果希望檔案被其他應用讀和寫,可以使用:

        openFileOutput("filename",Context.MODE_WORLD_READBLE+Context.MODE_WORLD_WRITEABLE);

 

    android有一套自己的安全模型,當應用程式(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源檔的時候,就需要userid匹配。預設情況下,任何應用建立的檔案,sharedpreferences,資料庫都應該是私人的,其他應用程式無法訪問。除非在建立時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有這樣其他程式才能正確訪問。

 

  下面我結合自己的理解,解釋一下Android中的檔案儲存體:

  1. 建立布局檔案,我們最終要實現的是如下介面,具體功能是輸入檔案名稱和檔案內容點擊儲存按鈕就將此檔案儲存到手機上:

    

  2. 編寫代碼實現響應功能:

    下面只貼出核心代碼

 1 import java.io.ByteArrayOutputStream; 2 import java.io.File; 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.FileOutputStream; 6 import java.io.IOException; 7  8 import android.content.Context; 9 10 /**11  * @author fanchangfa12  * 檔案操作類:13  * 檔案儲存14  * 檔案讀取15  */16 public class FileOperate{17     Context context;18     19     public FileOperate(Context context) {20         this.context = context;21     }22 23 24 25     /**26      * 儲存檔案方法27      * @param filename    檔案名稱28      * @param content    檔案內容29      * @throws IOException 30      */31     public void save(String filename , String content) throws IOException32     {33         FileOutputStream file_stream = context.openFileOutput(filename, Context.MODE_PRIVATE);34         file_stream.write(content.getBytes());35         file_stream.close();36     }37     38     public String read(String filename)throws IOException39     {40         //擷取檔案對象41         File file = new File(filename);42         //擷取輸出資料流對象43         FileInputStream instream = new FileInputStream(file);44         //獲得存放輸出資料流的集合45         ByteArrayOutputStream bstream = new ByteArrayOutputStream();46         //定義每次儲存輸出資料的位元組數組47         byte[] buffer = new byte[1024];48         49         //每次讀取資料的長度50         int len = 0;51         52         while((len = instream.read(buffer))!=-1)53         {54             bstream.write(buffer, 0, len);55         }56         57         instream.close();58         bstream.close();59         60         61           byte[] data = bstream.toByteArray();62           return new String(data);63 64         //return new String(bstream.toString());65     }66 }

  3. 儲存檔案成功以後,檔案預設儲存在/data/data/package名字/files/儲存的檔案名稱,如,我儲存的是一個a.txt檔案:

    

  響應的讀取檔案核心代碼也寫好,有需要的可以自己實現,其實Android中檔案存取很簡單,和Java資料流操作一樣。需要注意的是檔案儲存體時的模式不同,應用於各個應用程式之間的許可權也各部相同。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.