1. 程式人生 > >Android SDK提供的獲取檔案路徑方法小結

Android SDK提供的獲取檔案路徑方法小結

Android提供了兩種獲取檔案路徑的方式:

1、通過Environment獲取,常用方法如下圖所示:

這裡寫圖片描述

這些方法都是靜態方法。
通過Environment獲取的檔案路徑都是公共的,是所有app都可以訪問的,其中我們最常用的就是Environmen.getExternalStorageDirectory(),經常在這個目錄下建立資料夾存放檔案,這個路徑,也就是一般進入系統提供的檔案管理app呈現的第一級目錄。在這個路徑建立的目錄和檔案,是公共的,同時,除非手動刪除,否則即使建立這個目錄或檔案的app解除安裝,也會還會存在,各類清理大師什麼的,也不會去刪除,所以裝卸過很多app的話,這個路徑下也會有很多的目錄,還得一個一個手動刪除。

2、通過Context獲取,常用方法如下圖所示:

這裡寫圖片描述

檢視上面實驗結果,發現通過Context(注:這四個方法並不是靜態方法,這裡的Context是指具體的如Activity之類的Context子類)獲取的路徑都跟包名有關。事實上,通過Context獲取的這四個路徑下建立的目錄檔案都是app私有的,其他app是無法訪問的。
getCacheDir()、getFilesDir()獲取到的是系統內部儲存,是被隱藏起來的,通過系統自帶的檔案管理app是看不到的,只有root後才能檢視。
getCacheDir()獲取的路徑是快取路徑,系統清理垃圾快取的時候,會清空這個路徑下的所有檔案,app的快取檔案可以放在這裡。
getFilesDir(),則可以用來存放一些長久性的檔案,但是清理應用資料的時候會清空這個路徑下的內容
當app解除安裝時,以上兩個路徑也會被刪除。

getExternalFilesDir()、getExternalCacheDir()獲取的是外部儲存。可以被使用者檢視。除了可以被使用者檢視這一點與前面兩個方法獲得的路徑不一樣外,似乎找不到有什麼不同的,選擇清除資料的時候,getExternalFilesDir()獲取的路徑目錄也會被刪掉,選擇清楚快取的時候,getExternalCacheDir()獲取的路徑目錄也會被刪掉。

最後,由於基於Android的深度定製系統版本總舵,不同版本獲取的路徑可能會有一兩級目錄名不同或者多一兩級目錄,但是基本的路徑是差不多。