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