1腐芍、介紹
Android系統(tǒng)分為內部存儲和外部存儲:
- 內部存儲是手機系統(tǒng)自帶的存儲窘疮,一般空間都比較小
- 外部存儲一般是SD卡的存儲蹂空,空間一般都比較大舰始,但不一定可用或者剩余空間可能不足莱革。
一般我們存儲內容都會放在外部存儲空間里峻堰。使用過程注意事項:
- 先判斷SD卡是否可用,可用時優(yōu)先使用SD卡的存儲盅视,不可用時用內部存儲
- 存儲在SD卡上時捐名,可以在SD卡上新建任意一個目錄存放,也可以存放在應用程序內部文件夾闹击,區(qū)別是在SD卡的任意目錄存放時內容不會隨應用程序的卸載而消失镶蹋,而在應用程序內部的內容會隨應用程序卸載消失。
- 一般緩存文件放在應用程序內部赏半,用戶主動保存的文件放在SD卡上的文件夾里贺归。如果在SD卡上任意新建目錄存放所有數(shù)據(jù),用戶卸載時會殘存大量文件断箫,招致用戶反感拂酣。
2、存儲路徑
一般我們可以通過 Context 和 Environment 相關的方法獲取文件存取的路徑仲义。
2.1婶熬、內部存儲
2.1.1剑勾、內部根目錄
Environment.getDataDirectory() /data
2.1.2、內部應用程序目錄
- 獲取應用緩存目錄:
Context.getCacheDir(): /data/data/包名/cache
- 獲取應用文件目錄
Context.getFilesDir(): /data/data/com.learn.test/files
Context.getFileStreamPath(""): /data/data/com.learn.test/files
Context.getFileStreamPath("test"): /data/data/com.learn.test/files/test
2.2赵颅、外部存儲
2.2.1虽另、判斷sdCard是否存在
Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)
2.2.2、外部根目錄
Environment.getExternalStorageDirectory() /storage/emulated/0
2.2.3性含、外部應用程序目錄
- 獲取應用緩存目錄
Context.getExternalCacheDir() /storage/emulated/0/Andorid/data/包名/cache
- 獲取應用文件目錄
Context.getExternalFilesDir(""): /storage/emulated/0/Android/data/com.learn.test/files
Context.getExternalFilesDir("test"): /storage/emulated/0/Android/data/com.learn.test/files/test
Context.getExternalFilesDir(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Android/data/com.learn.test/files/Pictures
- 獲取外部公共存儲目錄
Environment.getExternalStorageDirectory(): /storage/emulated/0
Environment.getExternalStoragePublicDirectory(""): /storage/emulated/0
Environment.getExternalStoragePublicDirectory("test"): /storage/emulated/0/test
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES): /storage/emulated/0/Pictures
注:我們可以在外部存儲上新建任意文件夾洲赵,不過6.0及之后的系統(tǒng)需要動態(tài)申請權限,這些目錄的內容不會隨著應用的卸載而消失