目錄
一:App獨立文件
1.1第一種
File sdCard = Environment.getExternalStorageDirectory();
這個sdCard的路徑爲mnt/sdcard/ 即爲SD卡根路徑,我們可以指定訪問的文件夾名
File sdCard = Environment.getExternalStorageDirectory();
File directory_pictures = new File(sdCard, "Pictures");
Log.i(TAG,"directory_pictures="+directory_pictures);
得到的路徑如下:
1.2 第二種
File directory_pictures = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
Log.e(TAG, "directory_pictures="+directory_pictures);
二 App專屬文件
這類文件應該是隨着app刪除而一起刪除的,它們可以被存儲在兩個地方:internal storage 和 external storage 。
internal storage就是手機自帶的一塊存儲區域,通常很小;external storage就是通常所說的SD卡,通常很大,有16GB,32GB等。
internal storage很小,所以你就應該很正確的使用它,因爲SD卡有可能會被用戶卸下,換成新的,所以SD卡不是任何時間都可用的,因此我們必須將一些重要的數據庫文件以及一些用戶配置文件存放在internal storage中。將一些大的圖片或文件等緩存放到external storage中。
2.1 internal storage
這是你app私有的目錄,你的shared preference文件,數據庫文件,都存儲在這裏。目錄爲data/data/< package name >/files/
訪問方法爲:
File filesDir = getFilesDir();
Log.i(TAG,"file_dir="+filesDir);
2.2 external storage
這類文件不應該存在SD卡的根目錄下,而應該存在mnt/sdcard/Android/data/< package name >/files/…這個目錄下。這類文件應該隨着App的刪除而一起刪除。例如一種格式的電子書,只有該app纔可以打開,如果用戶刪除了該app,那麼留下來的電子書就成爲了一種無法打開的垃圾文件,所以應該隨着該app一起刪除掉。
獲得這個路徑的方法:
File externalFilesDir = getExternalFilesDir(null);
Log.i(TAG, "externalFileDir = "+externalFilesDir);
記得添加添加權限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
這樣路徑就訪問到了,我們注意到上面的getExternalFilesDir(null)參數傳入的爲null,這樣默認訪問的是files文件夾,我們可以指定子文件夾
File externalFilesDir = getExternalFilesDir("Caches");
Log.i(TAG, "externalFileDir = "+externalFilesDir);
有些時候我們的手機沒有安裝SD卡,所以我們使用前需要判斷一下:
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
//SD卡已裝入
}