Android 儲存目錄

James Lin
4 min readNov 5, 2018

--

官方定義的 internal , external storage

外存:只要是 data/app 目錄底下以外的都稱為 外存,因為 App 無法掌控其他目錄底下的資料。

內存:data/app 目錄底下在 Android 才是被定義成 內存

官方對於 external storage 有分兩個層級,私有外存公有外存。

公有外存:這些檔案可以被其他的 App 所使用,甚至當 App 被解除安裝後,這些檔案還是會存在。(ex:相片)

私有外存:這些檔案只屬於 App,當 App 被解除安裝後,這些檔案會被刪除,但是這些檔案可以透過一些技巧讓外部的 APP存取 或者 使用者存取

接著來介紹一下幾種檔案目錄

Internal Storage:從下圖可以看到 Context.filesDir.parent 與 Context.fileDir ,所以 App 的私有目錄是在 /data/user/0 …..;這底下的資料是只有 App 本身可以存取。

Cache Storage:他也是屬於 Internal Storage,比較需要注意的一點是當系統記憶體較低時,會把 Cache Storage 的東西刪除。

External Storage:Environment.getExternalStoragePublicDirectory ,他有幾種公開的路徑可以選擇詳細內容請查官網(https://developer.android.com/reference/android/os/Environment#DIRECTORY_PICTURES),這些檔案可以被其他的 App 所存取。

External Private Storage:this.getExternlFilesDir(null),這裡面的檔案,當 App 被解除安裝時,這些檔案會被移除,可以用其他的方式讓外部 App 及 使用者 存取。

如果傳入的參數是 null 則會到 file 目錄

External Storage:Environment.getExternalStorageDirectory ,取得 External Storage 的 root 目錄。

External Storage:this.externalCacheDir,是 external 的 cache 檔案,與 internal cache 一樣,但是有幾點要注意,這些 cache 檔案除了 time 檔案,其餘的檔案皆不會被自動刪除,由於是 external 的檔案,有可能因為使用者拔除 SD 卡之類的導致檔案遺失。

External Storage:this.externalMediaDirs[0].toURI().toString(),回傳的是一個 Array,裡面有 App Media 的絕對路徑。

--

--

James Lin
James Lin

No responses yet