天天看點

Android開發進階:如何讀寫Androi“.NET研究”d檔案

  Android主要有四大主要元件組成:Activity、ContentProvider、Service、Intent組成。Android檔案的運作主要需要讀寫四大元件的檔案。本文将介紹如何讀寫Android檔案,希望對正在進行Android開發的朋友有所幫助。

  在Android中檔案的I/O是存放在/data/data/<package name>/file/filename目錄下。

  提示:Android是基于linux系統的,在linux的檔案系統中不存在類似于Windows的磁盤分區現象,其是以一個正斜杠“/”開頭。

  在Android中,對于流的操作十分簡單。在Context類中有如下兩個方法可以直接得到檔案輸入輸出流:

1. public FileInputStream openFileInput (String name)

2. public FileOutputStream openFileOutput (String name, 上海網站建設yle="color: #0000ff;">int mode)

  顧名思義,通過如上方法就可以得到檔案輸入輸出流。對于第二個方法中的mode,有如下四種模式:

  ◆Use 0 or MODE_PRIVATE( the default operation) :用0表示預設值,隻能夠建立檔案的應用程式通路該檔案,每次檔案寫入為覆寫方式。

  ◆MODE_APPEND to append to an existing file: 每次檔案寫入為追加方式,類似于StringBuffer中的append()方法。

  ◆MODE_WORLD_READABLE  :隻有讀權限。

  ◆MODE_WORLD_WRITEABLE :隻有寫權限。

  提示:如果想同時得到讀與寫的權限,則可以在mode處通過如下方式建立:

MODE_WORLD_READABLE+ MODE_WORLD_WRITEABLE

  FileOutputStream:

  public void write(byte[] b) throws IOException 該方法可将指定的位元組數組寫入檔案輸出流

  FileInputStream:

  public int read(byte[] b) throws IOException 從此輸入流中将最多 b.length 個位元組的資料讀入一個 byte 數組中。在某些輸入可用之前,此方法将阻塞。

  對于輸出流直接使用write方法即可,可參考如下代碼:

  Java代碼

1. <span style="white-space: pre;"> </span>/**

2. * 寫入資料

3. * @param fs

4. * @param content

5. */

6. public void fileWrite(FileOutputStream fos,String content){

7. byte[] contentcontentByteArray = content.getBytes();

8. try {

9. fos.write(contentByteArray);

10. } catch (IOException e1) {

11. e1.printStackTrace();

12. }

13. try {//關閉流

14. fos.close();

15. } catch (IOException e) {

16. e.printStackTrace();

17. }

18. }

  對于輸入流,出于性能考慮,可先使用ByteArrayOutputStream,向記憶體中建立一個字元數組,當将檔案讀完後,在讀入,參考如下代碼:

1. * 讀資料

2. * @param fis

3. * @return

4上海徐彙企業網站設計與制作>. */

5. public String fileRead(FileInputStream fis){

6. ByteArrayOutputStream baos = new ByteArrayOutputStream();

7. byte[] buffer = new byte[1024];

8. int len = -1;

9. try {

10. while((len=(fis.read(buffer))) != -1){

11. baos.write(buffer,上海企業網站設計與制作>0,len);

12. }

13. } catch (IOException e) {

14. e.printStackTrace();

15. }

16. String result = new String(baos.toByteArray());

17. //System.out.println(result);

18. try {

19. baos.close();

20. fis.close();

21. } catch (IOException e) {

22. e.printStackTrace();

23. }

24. return result;

25. }

  ByteArrayOutputStream:此類實作了一個輸出流,其中的資料被寫入一個 byte 數組。

  public void write(byte[] b,int off,int len) 将指定 byte 數組中從偏移量 off 開始的 len 個位元組寫入此 byte 數組輸出流。

繼續閱讀