Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 高級開發 >> Android開發進階:如何讀寫Android文件

Android開發進階:如何讀寫Android文件

編輯:高級開發

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

51CTO推薦閱讀:android開發應用詳解

文件存放位置

在android中文件的I/O是存放在/data/data/<package name>/file/filename目錄下。

提示:android是基於Linux系統的,在Linux的文件系統中不存在類似於Windows的磁盤分區現象,其是以一個正斜槓“/”開頭。

android中得到輸入輸出流

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

  1. public FileInputStream openFileInput (String name)
  2. public FileOutputStream openFileOutput (String name, 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處通過如下方式創建:

  1. MODE_WORLD_READABLE+ MODE_WORLD_WRITEABLE

對於Java SE部分的補充

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,向內存中創建一個字符數組,當將文件讀完後,在讀入,參考如下代碼:

Java代碼

  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 數組輸出流。

可參考代碼:FileIO 代碼下載

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved