作為乙個開發者,我們經常需要通過快取一些檔案到sd卡中,常見的方式就是,通過:
file sdcard = environment.getexternalstoragedirectory();
sd卡根目錄會迅速變得雜亂不堪。並且在api 6.0之後,根目錄檔案儲存是需要使用者授權的,就算你在
androidmanifest.xml中配置了儲存許可權,使用者不授權也是寫不進去了.
sd卡讀寫許可權:
android:name="android.permission.write_external_storage"/>
其實,google已經提供了最佳的外部儲存方案,那就是統一路徑為:
/android/data/< package name >/files/… (該路徑通常掛載在/mnt/sdcard/下)
外部儲存路徑呼叫方法是:context.getexternalfilesdir(dir).getabsolutepath() //通過context呼叫,
引數dir為自自定義資料夾.
這個方法獲得的檔案儲存路徑適用於6.0以後系統,主要androidmanifest.xml配置讀寫許可權了,
就不需要使用者再授權了.
以上,是關於外部儲存的介紹,那麼如果有些手機沒有sd卡或者系統自身沒有分配外部儲存空間,時,
我們應該怎麼快取資料呢?
那就需要用到內部儲存了,內部儲存的路徑是: /data/data/< package name >/files/…
(該路徑掛載在在手機自身儲存目錄)
內部儲存路徑呼叫方法是:context().getcachedir().getabsolutepath() //通過context呼叫
因此,正常開發中獲取儲存路徑的方法是:
/***
* @param context 上下文物件
* @param dir 儲存目錄
* @return
*/public static string getfilepath(context context,string dir) else
file file = new file(directorypath);
if(!file.exists())
logutil.i("filepath====>"+directorypath);
return directorypath;
}其中,getexternalcachedir()與getcachedir()的區別 與getexternalfilesdir()及getfilesdir()的區別相同,
前者只是在路徑下自動建好了乙個cac**件目錄:/data/< package name >/files/cach/...
儲存區別簡明示意圖如下:
區別方法
備註external storage
外部儲存
environment.getexternalstoragedirectory()
sd根目錄:/mnt/sdcard/ (6.0後寫入需要使用者授權)
context.getexternalfilesdir(dir)
路徑為:/mnt/sdcard/android/data/< package name >/files/…
context.getexternalcachedir()
路徑為:/mnt/sdcard//android/data/< package name >/cach/…
internal storage
內部儲存
context.getfilesdir()
路徑是:/data/data/< package name >/files/…
context.getcachedir()
路徑是:/data/data/< package name >/cach/…
Android常用檔案路徑介紹
我想很多得人都和我一樣,經常記不住檔案的路徑,到使用的時候又是懵的,然後就想著寫一篇來記錄一下,方便以後檢視。1.context.getcachedir 應用內部儲存空間 資料檔案私有 當我們的檔案儲存在這個檔案下,是不需要申請許可權 當應用被解除安裝的時候目錄下的檔案也會跟著被刪除。複製 注意 這...
Android開發常用屬性
1 android string.xml 文字中間加入空格 密 碼 這個就代表著空格 2 文字單行顯示 文字單行顯示 文字輸入框單行輸入 android singleline true 單行顯示 3 editview輸入框屬性 文字輸入框的輸入資料不直接顯示 文字輸入框的輸入資料只能為數字 andr...
常用android開發命令
1.檢視專案的依賴 2.當前執行的activity adb shell dumpsys window grep mcurrentfocus 3.等待debug debug.waitfordebugger 安裝apk adb install apk所在的位址 apk的名字解除安裝apk adb uni...