1. 程式人生 > >安卓檔案操作api與路徑對應關係整理

安卓檔案操作api與路徑對應關係整理

一、簡述

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

以上幾個測試對應的路徑為:  

vivo
meizu

通過以上觀察可以發現,有幾個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)