文件存儲數據使用了Java中的IO操作來進行文件的保存和讀取。針對文件的操作主要是以下三種:
1.創建或打開文件
2.讀取文件
3.刪除文件
創建文件:
1.通過Context.openFileOutput獲取輸出流
/*
* name 打開或創建文件的名稱
* mode 打開或創建文件的模式
*/
FileOutputStream openFileOutput (String name,
int mode)
Tip:創建的存儲文件保存在/data/data/
/files文件夾下
2.四種文件保存的模式
Context.MODE_PRIVATE = 0
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_APPEND = 32768
MODE_PRIVATE 為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下寫入的內容會覆蓋原文件的內容。
MODE_WORLD_READABLE 表示當前文件可以被其他應用讀取。
MODE_WORLD_WRITEABLE 表示當前文件可以被其他應用寫入。
MODE_APPEND 檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
Tip:在使用模式時,可以用"+"來選擇多種模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE)
android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,數據庫都應該是私有的
讀取文件:
通過Context.openFileInput獲取輸入流。
/*
* name 打開或創建文件的名稱
*/
FileInputStream openFileInput (String name)
刪除文件:
/*
* name 刪除文件的名稱
* return 成功返回true,反之false
*/
boolean deleteFile (String name)
獲取文件路徑的方法:
getFilesDir()可以獲取到"/data/data//files"
getCacheDir()可以獲取到"/data/data//cache"
把文件存入SDCard
1.操作SDCard需要的權限
name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.要往SDCard存放文件,程序必須先判斷手機是否裝有SDCard,並且可以進行讀寫。可以通過getExternalStorageState ()獲得SDCard狀態
返回的狀態如下:
Environment.MEDIA_BAD_REMOVAL:bad_removal ——Media Remote before Unmount
Environment.MEDIA_CHECKING:checking——Media present(已插入) and being disk-check
Environment.MEDIA_MOUNTED:mounted——Media present and mounted and can be read/write
Environment.MEDIA_MOUNTED_READ_ONLY:mounted_ro——Media present and mounted and can be read
Environment.MEDIA_NOFS:nofs——Media present but filesytem not support
Environment.MEDIA_REMOVED:removed——Media not present
Environment.MEDIA_SHARED:shared——Media present and not mount. and share
Environment.MEDIA_UNMOUNTABLE:unmountable——Media present but can not mount
Environment.MEDIA_UNMOUNTED:unmounted——Media present but not mount
3.獲取SDCard目錄
/*
* return SDCard的目錄File
*/
File getExternalStorageDirectory ()