Android值資料讀寫在sd卡需要注意的事項
使用Sdcard注意事項:
1.許可權問題:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
2.硬性編碼問題:通過 Environment可以獲取sdcard的路徑
Environment.getExternalStorageDirectory().getPath();
3.使用前需要判斷sdcard狀態
if(!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)){
//sdcard狀態是沒有掛載的情況
Toast.makeText(mContext, "sdcard不存在或未掛載", Toast.LENGTH_SHORT).show();
return ;
}
4.需要判斷sdcard剩餘空間
//判斷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比較大的資料。