cache緩存目錄
上下文提供的 getCacheDir()
返回值 | 方法 | 獲取路徑 |
File | getCacheDir() | 獲取/data/user/packagename/cache目錄,應用程序的緩存目錄,該目錄內的文件在設備內存不足時會優先被刪除掉,所以存放在這裏的文件是沒有任何保障的 |
files目錄
上下文提供了兩個方法,用於操作私有目錄文件的輸入和輸出
返回值 | 方法 | 獲取路徑 |
File | getFilesDir() | 獲取/data/user/packagename/files目錄 |
FileOutputStream | openFileOutput(String fileName, int mode) |
直接指定到/data/user/packagename/files/fileName目錄下的文件. 四種模式Mode值:
操作模式可以疊加,如: openFileOutput("file.txt", MODE_PRIVATE + MODE_APPEND); |
FileInputStream | openFileInput(String fileName) | 直接指定到/data/user/packagename/files/fileName目錄下的文件 |
四種模式,意義分別爲(模式爲Context中的字段值):
- MODE_PRIVATE:爲默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中,可以使用MODE_APPEND。
- MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
- MODE_WORLD_READABLE:表示該文件可以被其他應用讀取。
- MODE_WORLD_WRITEABLE:表示該文件可以被其他應用寫入。
不傳遞參數MODE_WORLD_READABLE 或 MODE_WORLD_WRITEABLE 模式則默認其它程序不可操作此程序在files目錄下更改的new 新文件
shared_prefs鍵值對文件目錄
SharedPreferences sp = Context.getSharedPreferences(String fileName, int mode);
如果指定的文件爲null,則會自動創建。
databases數據庫目錄
查找指定名字的數據庫文件,如果沒有的話,會創建一個新的。創建數據庫的時候,也需要指定模式:
SQLiteDatabase db = Context.openOrCreateDatabase(String dbName, int mode, CursorFactory factory);
該方法將返回一個指向指定數據庫文件的File對象:
File dbFile = Context.getDatabasePath(String name);
databases/目錄下全部數據庫文件:
String[] dbsName = Context.databaseList();
如果指定名字的數據庫文件被刪除成功將返回true,反之返回false:
boolean Context.deleteDatabase(String dbName);
lib目錄
- 這個子目錄存放着的是應用程序需要使用的Native原生程序,即JNI調用需要加載的.so文件。
- 這些文件一般是位於apk安裝包裏的lib目錄下。在程序安裝的時候,系統會將所有apk文件中lib目錄下的所有原生程序拷貝到這個子目錄下。
- 該目錄是程序不能操作的,不能在程序運行時,向該目錄拷貝.so文件,然後再通過調用System.loadLibrary函數將其加載進來。
自定義目錄
File Context.getDir(String name, int mode);
該方法返回指向/data/data/<Package Name>/下指定名稱的文件夾的一個File對象。如果該文件夾不存在則用指定名稱創建一個新的文件夾。