App專屬文件 vs App獨立文件
app專屬文件就是那些只有該app纔可以使用的文件,例如專屬格式的電子書,app獨立文件就是那些不依賴於某特定app的文件,例如照片。
App專屬文件
這類文件應該是隨着app刪除而一起刪除的,它們可以被存儲在兩個地方:internal storage 和 external storage 。 internal storage就是手機自帶的一塊存儲區域,通常很小;external storage就是通常所說的SD卡,通常很大,有16GB,32GB等。
internal storage很小,所以你就應該很正確的使用它,因爲SD卡有可能會被用戶卸下,換成新的,所以SD卡不是任何時間都可用的,因此我們必須將一些重要的數據庫文件以及一些用戶配置文件存放在internal storage中。將一些大的圖片或文件等緩存放到external storage中。
存儲在internal storage
這是你app私有的目錄,你的shared preference文件,數據庫文件,都存儲在這裏。目錄爲data/data/< package name >/files/
訪問方法爲:
-
File filesDir = getFilesDir();
獲得得路徑爲:/data/data/< package name >/files/
存儲在external storage
這類文件不應該存在SD卡的根目錄下,而應該存在mnt/sdcard/Android/data/< package name >/files/…這個目錄下。這類文件應該隨着App的刪除而一起刪除。例如一種格式的電子書,只有該app纔可以打開,如果用戶刪除了該app,那麼留下來的電子書就成爲了一種無法打開的垃圾文件,所以應該隨着該app一起刪除掉。
獲得這個路徑的方法:
Android Q(10)以前版本:
File externalFilesDir = getExternalFilesDir();
獲得得路徑爲:/mnt/sdcard/Android/data/< package name >/files/
也可以這樣用:
String path = getExternalFilesDir("/TPK/dzdt.tpk").getPath();
獲得得路徑爲:/mnt/sdcard/Android/data/< package name >/files/TPK/dzdt.tpk
App獨立文件
這類文件當我們刪除應用之後,還應該保留在手機上的,例如拍照的照片,不應該隨着刪除應用而被刪除掉。對於這類文件,Android給我們提供了特定的目錄,這些目錄都是以DIRECTORY開頭的,例如:DIRECTORY_MUSIC , DIRECTORY_PICTURES.
訪問這些文件夾有兩種方式:
1
-
.File sdCard = Environment.getExternalStorageDirectory();
2.
-
File directory_pictures =
-
Environment.getExternalStoragePublicDirectory("添加公共目錄://");
獲得得路徑都爲:/mnt/sdcard/
附:
通過Context.getExternalFilesDir()方法可以獲取到 SDCard/Android/data/{package_name}/files/ ,儲存一些長時間保存的數據;
通過Context.getExternalCacheDir()方法可以獲取到 SDCard/Android/data/{package_name}/cache/,儲存臨時緩存數據;