安卓檔案操作api與路徑對應關係整理
阿新 • • 發佈:2018-12-11
一、簡述
在安卓開發中,經常會用到一些需要操作檔案的需求,自己一直對api和檔案路徑相關的對應關係模糊不清楚,今天有時間來整理記錄下,免得以後忘記了。
ps:由於手裡沒有可以裝SD卡的機器,所以以下測試結果均是在無外接sd卡的手機上的測試結果
二、開始測試
首先看以下程式碼
ps:以下測試機型均為Vivo X9(android 7.1.2 api 25)和MeiZu M3(android 5.1 api 22)
getFilesDir(); getExternalCacheDir(); getPackageCodePath(); getPackageResourcePath(); getCacheDir(); getExternalFilesDir(null); Environment.getExternalStorageState(); Environment.getExternalStorageDirectory(); Environment.getDataDirectory(); Environment.getDownloadCacheDirectory(); Environment.getRootDirectory(); Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
以上幾個測試對應的路徑為:
通過以上觀察可以發現,有幾個api不同機型還是有點不同的,國產廠商定製系統,進行了對應的修改,使用的時候還是要小心點,防止“掉坑”。
這裡吐槽一下CSDN圖片編輯太爛,圖片格式真心不好調整,想放在一行都不行,下面做一個總結記錄:
Environment.getDataDirectory() = /data Environment.getDownloadCacheDirectory() = /data/cache (vivo) /cache (meizu) Environment.getExternalStorageDirectory() = /storage/emulated/0 Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) = /storage/emulated/0/Pictures Environment.getRootDirectory() = /system getPackageCodePath() = /data/app/com.demo.mydemoapplication-1/base.apk getPackageResourcePath() = /data/app/com.demo.mydemoapplication-1/base.apk getCacheDir() = /data/data/com.demo.mydemoapplication/cache (meizu) /data/user/0/com.demo.mydemoapplication/cache (vivo) getDatabasePath(“test”) = /data/data/com.demo.mydemoapplication/databases/test getDir(“test”, Context.MODE_PRIVATE) = /data/data/com.demo.mydemoapplication/app_test getExternalCacheDir() = /storage/emulated/0/Android/data/com.demo.mydemoapplication/cache getExternalFilesDir(“test”) = /storage/emulated/0/Android/data/com.demo.mydemoapplication/files/test getExternalFilesDir(null) = /storage/emulated/0/Android/data/com.demo.mydemoapplication/files getFilesDir() = /data/data/com.demo.mydemoapplication/files (meizu) /data/user/0/com.demo.mydemoapplication/files (vivo)