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

來源: javaeye  發布時間: 2010-12-26 21:50  閱讀: 5076 次  推薦: 0   原文鏈接   [收藏]  
摘要:Android文件的運行主要需要讀寫四大組件的文件。本文將介紹如何讀寫Android文件,希望對正在進行Android開發的朋友有所幫助。

  Android主要有四大主要組件組成:Activity、ContentProvider、Service、Intent組成。Android文件的運行主要需要讀寫四大組件的文件。本文將介紹如何讀寫Android文件,希望對正在進行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處通過如下方式創建:

 
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 代碼下載

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()