【Android】私有目錄獲取方法

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值:

  • MODE_PRIVATE
  • MODE_APPEND
  • MODE_WORLD_READABLE
  • MODE_WORLD_WRITEABLE

操作模式可以疊加,如:

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_READABLEMODE_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對象。如果該文件夾不存在則用指定名稱創建一個新的文件夾。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章