1. 程式人生 > >Android 獲取本地儲存路徑的各種方法詳解

Android 獲取本地儲存路徑的各種方法詳解

Android 中獲取本地儲存路徑,有四個方法,
getCacheDir()getFilesDir()getExternalFilesDir()getExternalCacheDir()。
接下來介紹下每個方法的特點以及路徑地址
getCacheDir():/data/data/你的應用的包名/cache
getFilesDir():/data/data/你的應用的包名/files
getExternalFilesDir():SDCard/Android/data/你的應用的包名/files/
getExternalCacheDir():SDCard/Android/data/你的應用包名/cache/
從上文每個方法獲取的路徑中可以看出,getCacheDir()getFilesDir()是獲取手機自帶的儲存空間中的當前包檔案的路徑 ;
getExternalFilesDir()getExternalCacheDir()是獲取手機中SD卡的儲存控制元件中的當前包檔案的路徑。

getCacheDir()

該目錄主要用於存放快取檔案,當系統的記憶體儲存空間緊張時,該目錄下的檔案會被刪除掉。關於這些檔案究竟會在儲存空間剩餘多少的情況,沒有嚴格的標準保障。
注意:你不應該依賴系統來清理這些快取檔案,你應該對這些快取檔案佔用的最大儲存空間設定個最大值,比如是1M,當實際佔用空間超過這個值時,你應該對這些快取檔案做相應的清理工作(prune)。

返回的路徑可能會改變隨著時間的推移,所以應該儲存相對路徑相對路徑

getFilesDir()

1,openFileOutput() 方法儲存的路徑,跟getFilesDir() 返回的路徑是同一個路徑,換句話說:getFilesDir(),是獲取openFileOutput() 方法的儲存路徑。
返回的路徑可能會改變隨著時間的推移,所以應該儲存相對路徑相對路徑
2,不需要任何許可權也可以訪問

目錄中的檔案,會在解除安裝你的應用程式時被刪除掉

getExternalFilesDir()

儲存在SD卡中,和getFilesDir()類似;
該方法路徑下系統不一定會自動刪除檔案,所以需要手動設定使用的大小
getExternalFilesDir()路徑不一定可用,因為,sd卡可能被解除安裝

getExternalCacheDir()

儲存在SD卡中,和getCacheDir類似;
該方法路徑下系統不一定會自動刪除檔案,所以需要手動設定使用的大小
getExternalCacheDir()路徑不一定可用,因為,sd卡可能被解除安裝

綜上所述較優秀的程式都會專門寫一個方法來獲取快取地址,如下所示:
public String getDiskCacheDir(Context context) {  
    String cachePath = null;  
    if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())  
            || !Environment.isExternalStorageRemovable()) {  
        cachePath = context.getExternalCacheDir().getPath();  
    } else {  
        cachePath = context.getCacheDir().getPath();  
    }  
    return cachePath;  
}