天天看點

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);

當應用被解除安裝的時候,目錄下的檔案會被删除,但是這裡和getFilesDir()還有不同之處:

隻有手機系統使用的是虛拟外部存儲(虛拟SD卡)的時候,

才可以在解除安裝應用的同時,自動删除該目錄下的檔案,如果是之前的實體存儲(實體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);

這個目錄是用來存放各種類型的檔案的目錄,在這裡使用者可以分類管理不同類型的檔案(例如音樂、圖檔、電影等);

類型如下: DIRECTORY_MUSIC, DIRECTORY_PODCASTS, DIRECTORY_RINGTONES, DIRECTORY_ALARMS, DIRECTORY_NOTIFICATIONS, DIRECTORY_PICTURES, DIRECTORY_MOVIES, DIRECTORY_DOWNLOADS, DIRECTORY_DCIM, or DIRECTORY_DOCUMENTS

繼續閱讀