android成長之路,獲取外部與內部儲存的程式碼
阿新 • • 發佈:2019-02-09
外部:
Context.getFileDir().getPath();
內部:
Environment.getExternalStorageDirectory().getPath();
注意事項:
1、許可權
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2、使用前判斷sd卡的狀態
if(!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)){
//sdcard狀態是沒有掛載的情況
Toast.makeText(mContext, "sdcard不存在或未掛載", Toast.LENGTH_SHORT).show();
return ;
}
3、判斷sd卡的剩餘空間
//判斷sdcard儲存空間是否滿足檔案的儲存
File sdcard_filedir = Environment.getExternalStorageDirectory();//得到sdcard的目錄作為一個檔案物件
long usableSpace = sdcard_filedir.getUsableSpace();//獲取檔案目錄物件剩餘空間
long totalSpace = sdcard_filedir.getTotalSpace();
//將一個long型別的檔案大小格式化成使用者可以看懂的M,G字串
String usableSpace_str = Formatter.formatFileSize(mContext, usableSpace);
String totalSpace_str = Formatter.formatFileSize(mContext, totalSpace);
if(usableSpace < 1024 * 1024 * 200){//判斷剩餘空間是否小於200M
Toast.makeText(mContext, "sdcard剩餘空間不足,無法滿足下載;剩餘空間為:"+usableSpace_str, Toast.LENGTH_SHORT).show();
return ;
}
/data/data: context.getFileDir().getPath();
是一個應用程式的私有目錄,只有當前應用程式有許可權訪問讀寫,其他應用無許可權訪問。一些安全性要求比較高的資料存放在該目錄,一般用來存放size比較小的資料。
/sdcard: Enviroment.getExternalStorageDirectory().getPath();
是一個外部儲存目錄,只用應用聲明瞭<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>的一個許可權,就可以訪問讀寫sdcard目錄;所以一般用來存放一些安全性不高的資料,檔案size比較大的資料。