一、簡述
在安卓開發中,經常會用到一些需要操作文件的需求,自己一直對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)