歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中的數據存取 之 File

Android系統中,我們可以很方便的利用文件存儲我們想要的內容
Context為我們提供了以下的幾個方法

方法名稱                                                                                 
 描述
 
openFileInput(String name)
 打開應用程序的數據文件夾下的name文件對應的輸入流
 
openFileOutput(String name,int mode)
 打開應用程序的數據文件夾下的name文件對應的輸出流,並且指定以某種方式打開。

openFileOutput()方法的第一參數用於指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創建它。創建的文件保存在/data/data/<package name>/files目錄,如: /data/data/cn.itcast.action/files/itcast.txt ,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然後在File Explorer視圖中展開/data/data/<package name>/files目錄就可以看到該文件。
openFileOutput()方法的第二參數用於指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE    =  0
Context.MODE_APPEND    =  32768
Context.MODE_WORLD_READABLE =  1
Context.MODE_WORLD_WRITEABLE =  2
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件。
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。
如果希望文件被其他應用讀和寫,可以傳入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,數據庫都應該是私有的(位於/data/data/<package name>/files),其他程序無法訪問。除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。

還有一些Context為我們提供了其他幾個方法用來訪問應用程序的數據文件夾

方法名稱
 描述
 
getDir(String name,int mode)
 在應用程序的數據文件下獲取或創建name對應的子目錄
 
File getFilesDir()
 得到該應用程序數據文件夾的絕對路徑
 
String[] fileList()
 等到該應用程序數據文件夾下的全部文件
 
deleteFile(String name)
 刪除該應用程序的數據文件夾下的指定文件
 

文件存儲的位置: /data/data/<package name>/files/

把文件放入SD卡

使用Activity的openFileOutput()方法保存文件,文件是存放在手機空間上,一般手機的存儲空間不是很大,存放些小文件還行,如果要存放像視頻這樣的大文件,是不可行的。對於像視頻這樣的大文件,我們可以把它存放在SDCard。 SDCard是干什麼的?你可以把它看作是移動硬盤或U盤。

在模擬器中使用SDCard,你需要先創建一張SDCard卡(當然不是真的SDCard,只是鏡像文件)。創建SDCard可以在Eclipse創建模擬器時隨同創建,也可以使用DOS命令進行創建,如下:

在Dos窗口中進入android SDK安裝路徑的tools目錄,輸入以下命令創建一張容量為2G的SDCard,文件後綴可以隨便取,建議使用.img:

mksdcard 2048M D:\AndroidTool\sdcard.img

在程序中訪問SDCard,你需要申請訪問SDCard的權限。

在AndroidManifest.xml中加入訪問SDCard的權限如下:

<!-- 在SDCard中創建與刪除文件權限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!-- 往SDCard寫入數據權限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。

注意:訪問SDCard必須在AndroidManifest.xml中加入訪問SDCard的權限

  1. if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
  2.          File sdCardDir = Environment.getExternalStorageDirectory();//獲取SDCard目錄   
  3.          File saveFile = new File(sdCardDir, “a.txt”);  
  4.          FileOutputStream outStream = new FileOutputStream(saveFile);  
  5.          outStream.write("test".getBytes());  
  6.          outStream.close();  
  7. }  
Copyright © Linux教程網 All Rights Reserved