android基礎-檔案儲存目錄
知識點
- android常見的檔案儲存路徑的意義
- android開發中常用檔案儲存相關api
檔案儲存分類
在如今的android開發中,檔案儲存一般分為以下兩種:
- 內部儲存 : 一般沒root的情況下是對使用者不可見的
- 外部儲存 : 外部儲存是我們平時常說的32g/64g/128g等,一般就是手機檔案管理器或者連上電腦後所訪問的那個根目錄
一、內部儲存
在android應用中的內部儲存指的是下面這種型別地址:
/data/data/應用包名/
栗子如下:

image.png
(ps:由於沒有root的手機做例子,所以直接用參考文章中的圖片了)
內部儲存的特點有:
- 應用不需要宣告讀寫許可權就能操作這個目錄下的資料夾或者檔案
- 一般情況下,只有應用本身具有操作該目錄的權利
- 當應用解除安裝之後,該目錄也會被刪除
- 這部分目錄,普通使用者通過手機自帶的檔案管理器是看不到的,除非使用Root Explorer等工具才可以看到,並且要申請Root許可權才能進行讀寫操作。
1.1 關於/data/data/應用包名/files目錄
該目錄一般就是應用儲存自己的一些資料所用,相關操作如下:
files目錄檔案獲取:
File file = context.getFilesDir();
列出files資料夾下面的檔名:
String[] files = context.fileList();
刪除files目錄下的檔案
context.deleteFile("路徑");
在files目錄下開啟或者建立檔案
context.openFileOutput(String name, int mode);
1.2 關於/data/data/應用包名/cache目錄
和files目錄相比,cache目錄有一個特點:就是當系統儲存空間不足時,會刪除其中的資料夾
獲取cache目錄檔案如下:
File cacheFile = context.getCacheDir();
1.3 關於data/data/應用/code_cache 目錄
它和上面cache目錄類似,都是隻能得到一個File物件,同樣的,它也有一個特點,就是當App升級時,會刪除該目錄下的內容,這個API要求大於21:
File code = context.getCodeCacheDir()
1.4 SharePreference和資料庫儲存的目錄
這兩個儲存資料的方式一般儲存在如下目錄:
SharePreference:
/data/data/應用包名/shared_prefs
資料庫:
/data/data/應用包名/databases
1.5 關於data/data/應用包名的目錄
獲取方式為:
File dir = context.getDir(path, Context.MODE_APPEND);
二、外部儲存
外部儲存有如下特點:
- 需要申請讀寫許可權才能訪問
- 任何有許可權的應用都可以訪問它
- 不會隨著應用的解除安裝而被刪除
外部儲存其實就是我們手機平時連線電腦後看到的目錄,他的File的絕對路徑為
/storage/emulated/0
程式碼獲取File檔案方式:
File file= Environment.getExternalStorageDirectory();
2.1 關於Environment類
該類下還有幾個我們常見,然而可能很多人又經常分不清的方法,這裡總結一下:
// 返回是/system目錄,它和/sdcard以及/data是同級的. File file= Environment.getRootDirectory();
// 返回是/cache目錄,它和/sdcard以及/data是同級的. File file= Environment.getDownloadCacheDirectory();
// 返回的目錄是在/storage/emulated/0/ +對應的引數的目錄 * @param type The type of storage directory to return. Should be one of *{@link #DIRECTORY_MUSIC}, {@link #DIRECTORY_PODCASTS}, *{@link #DIRECTORY_RINGTONES}, {@link #DIRECTORY_ALARMS}, *{@link #DIRECTORY_NOTIFICATIONS}, {@link #DIRECTORY_PICTURES}, *{@link #DIRECTORY_MOVIES}, {@link #DIRECTORY_DOWNLOADS}, *{@link #DIRECTORY_DCIM}, or {@link #DIRECTORY_DOCUMENTS}. May not be null. File file = Environment.getExternalStoragePublicDirectory(String type);
2.2關於應用的外部儲存目錄:
對於外部儲存,也有屬於應用儲存資料的目錄,地址一般如下:
/Android/data/應用包名/
該目錄的特點有:
- 4.4以後不需要申請讀寫許可權也能訪問
- 隨著應用的解除安裝而被刪除
- 該目錄可以被其它應用訪問
相關api有:
// 返回的是/Android/data/應用包名/cache目錄所對應的File物件 File file= this.getExternalCacheDir();
// type和Environment中定義的型別相同,根據type的不同返回不同的File物件,例如DIRECTORY_DCIM,那麼得到的是/Android/data/應用包名/files/DCIM所對應的File物件。 File file= this.getExternalFilesDir(String type)
總結
對於android目錄我們可能有時候會經常接觸,但總會分不清相關api到底指的哪個目錄或者不清楚這個目錄的真正作用,在這總結一下便於自己後續開發可以清晰的知道android檔案儲存中的目錄該如何正確的使用