Android 檔案路徑詳解
Android 檔案目錄繁多,每個目錄都有每個目錄存在的意義,將檔案儲存在正確的目錄,有利於檔案的分類管理。 Android磁碟儲存可以分為兩大類,內部儲存和外部儲存。
內部儲存
內部儲存不是記憶體,是位於位於系統磁碟中一個獨特的位置。/data/ 資料夾就是內部儲存,內部儲存中一般儲存一些應用的資料,如apk,shareprefence、database資料,webview快取和圖片快取等。內部儲存中還有一個資料夾每個應用都只有一個,裡面中資料在應用解除安裝之後,就會被刪除。結構如:/data/data/你的應用的包名/。其次還有一個 /data/app/ 的資料夾,這裡面儲存著我們手機上安裝的apk檔案。
特點
- 內部儲存的檔案和目錄只能被我們的app自己所訪問,別的app不能訪問。
- 內部儲存中的私有目錄,當用戶解除安裝app之後,改檔案目錄中關於該應用的資訊就會被刪除。
- 內部儲存是可用的。
- 內部儲存大小有限,不適合儲存大量資料。
- 只有root的手機,才能從手機檔案管理器看見,否則都是隱藏著的。
getCacheDir().getAbsolutePath();///data/data/包名/cache
常見的內部儲存中有這些目錄
- /data/app/
- /data/data/包名/shared_prefs
- /data/data/包名/cache
- /data/data/包名/databases
- /data/data/包名/files
外部儲存
外部儲存並不是指拓展的SD卡,不管有無外接裝置,每個Android手機都有外部儲存。一般的mnt或者storage目錄。外部儲存中分兩類目錄,私有目錄和公有目錄,私有目錄的資料會隨著應用的解除安裝而刪除,公有目錄則不會。
特點
- 公有目錄任何程式都可以訪問,私有目錄自身可以訪問。
- 並不一定是可用的,因為SD卡會被掛載。
- 外部儲存中的私有目錄中的資料會隨著應用的解除安裝而刪除,公有目錄則不會。
公有目錄
公有目錄是任何程式都可以
- DIRECTORY_MUSIC
音樂/storage/emulated/0/Music
- DIRECTORY_PODCASTS
播客/storage/emulated/0/Podcasts
- DIRECTORY_RINGTONES
來點鈴聲
- DIRECTORY_ALARMS
鬧鐘/storage/emulated/0/Alarms
- DIRECTORY_NOTIFICATIONS
通知/storage/emulated/0/Notifications
- DIRECTORY_PICTURES
圖片/storage/emulated/0/Pictures
- DIRECTORY_MOVIES
電影/storage/emulated/0/Movies
- DIRECTORY_DOWNLOADS
下載檔案儲存路徑/storage/emulated/0/Download
- DIRECTORY_DCIM
媒體檔案/storage/emulated/0/DCIM
- DIRECTORY_DOCUMENTS
文件/storage/emulated/0/Documents
我們通過Environment.getExternalStoragePublicDirectory()來獲取這些目錄
私有目錄
外部儲存中的私有目錄是不會自動建立的,需要開發者自己建立,私有目錄應用本身無需申請動態許可權,就能直接訪問。我們可以在私有目錄下新建我們自己的資料夾
- getExternalFilesDir(“files目錄的子目錄名稱”)
獲取應用私有目錄files目錄中的檔案目錄(/storage/emulated/0/Android/data/包名/files/子目錄)
- getExternalCacheDir()
獲取應用cache目錄(/storage/emulated/0/Android/data/包名/cache)