Android文件各種存儲路徑的比較


1、File cacheDir = context.getCacheDir();

應用內部存儲空間(數據文件私有)文件存儲到這個路徑下,不需要申請權限,當應用被卸載的時候,目錄下的文件會被刪除。
需要注意的是,這個文件的目錄和應用的存儲位置有關,
當應用被移動到外部存儲設備的時候,文件的絕對路徑也是變化的,所以建議當數據存儲到這個目錄的時候,用相對路徑。
這個目錄和getFilesDir()目錄最大的不同在於:當安卓設備的存儲空間少,或者不夠用的時候,系統會自動刪除這個目錄下的文件。
官方建議是,超過1MB的文件,建議存儲到getExternalCacheDir()目錄下

 

2、File filesDir = context.getFilesDir();

應用內部存儲空間(數據文件私有)文件存儲到這個路徑下,不需要申請權限,當應用被卸載的時候,目錄下的文件會被刪除。
需要注意的是,這個文件的目錄和應用的存儲位置有關,
當應用被移動到外部存儲設備的時候,文件的絕對路徑也是變化的,所以建議當數據存儲到這個目錄的時候,用相對路徑
系統提供的訪問此路徑文件的方法是:context.openFileOutput(String,int);context.openFileInput(String name);

 

3、File externalCacheDir = context.getExternalCacheDir();

應用外部存儲空間(數據文件私有,系統媒體文件無法訪問(例如存了一個MP3文件,通過系統的文件夾管理系統,無法找到)),
當應用被卸載的時候,目錄下的文件會被刪除,但是這里和getCacheDir()還有不同之處:
只有手機系統使用的是虛擬外部存儲(虛擬SD卡,現在絕大多數的手機,都不用外掛物理SD卡了)的時候,
才可以在卸載應用的同時,自動刪除該目錄下的文件,如果是之前的物理存儲(物理SD卡)則不會自動刪除該目錄,及目錄下的文件。
在使用的時候,需要判斷外部存儲的掛載狀態(getExternalStorageState(File)),還需要申請讀寫權限(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
注:當其他應用擁有SD卡讀寫權限的時候,可以訪問該目錄下的文件

 

4、File externalFilesDir = context.getExternalFilesDir(null);

應用外部存儲空間(數據文件私有,系統媒體文件無法訪問(例如存了一個MP3文件,通過系統的文件夾管理系統,無法找到)),
當應用被卸載的時候,目錄下的文件會被刪除,但是這里和getFilesDir()還有不同之處:
只有手機系統使用的是虛擬外部存儲(虛擬SD卡)的時候,
才可以在卸載應用的同時,自動刪除該目錄下的文件,如果是之前的物理存儲(物理SD卡)則不會自動刪除該目錄,及目錄下的文件
在使用的時候,需要判斷外部存儲的掛載狀態(getExternalStorageState(File)),還需要申請讀寫權限(READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE)
注:當其他應用擁有SD卡讀寫權限的時候,可以訪問該目錄下的文件

 

5、File externalStorageDirectory = Environment.getExternalStorageDirectory();

應用外部存儲空間(數據文件非私有,可以被手機的系統程序訪問(如MP3格式的文件,會被手機系統檢索出來),同樣,該目錄下的文件,所有的APP程序也都是可以訪問的,)
注意:外部存儲空間可能處於不可訪問狀態,或者已經被移除狀態,或者存儲空間損壞無法訪問等問題。可以通過getExternalStorageState()這個方法來判斷外部存儲空間的狀態。
注:在該目錄下讀寫文件,需要獲取讀寫權限
該目錄下的文件,這個目錄是用戶進行操作的一個根目錄,進入二級目錄可以通過
getExternalFilesDirs(String), getExternalCacheDirs(), and getExternalMediaDirs().這些方法
官方建議,不要直接使用該目錄,為了避免污染用戶的根命名空間,應用私有的數據,應該放在 Context.getExternalFilesDir目錄下
其他的可以被分享的文件,可以放在getExternalStoragePublicDirectory(String).目錄下

 

6、File externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

應用外部存儲空間(數據文件非私有,可以被手機的系統程序訪問(如MP3格式的文件,會被手機系統檢索出來),同樣,該目錄下的文件,所有的APP程序也都是可以訪問的,)
這個目錄是用來存放各種類型的文件的目錄,在這里用戶可以分類管理不同類型的文件(例如音樂、圖片、電影等);
類型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTS


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM