[英]android: writing to sdcard fails - why?
我的代碼有問題,應該將一些數據字符串寫入我的sdcard。 我使用一個類來做到這一點:
public class CVS {
private String path;
private String filename;
private File dir;
private File file;
private FileWriter fw;
public CVS() {
path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/traffic/";
filename = "data.cvs";
file = new File(path, filename);
createDir();
}
private void createDir() {
dir = new File(path);
if(!dir.exists()) {
if(file.mkdirs() == false) {
Log.d(Config.LOGTAG, "UHOH!!!!!!!!!!!!!!!!!!!!!!!!");
}
}
else Log.d(Config.LOGTAG, "dir exists");
}
public void writeToFile(String data) {
try {
fw = new FileWriter(file);
fw.append(data); Log.d(Config.LOGTAG, "data saved to file...");
}
catch(Exception e) {
Log.d(Config.LOGTAG, "file: " + e.getMessage());
}
}
}
這總是導致異常被writeToFile()捕獲,並說“權限被拒絕”。 實際上,我在清單中將權限設置為WRITE_EXTERNAL_STORAGE。 所以-我在做什么錯!!
附加信息:安裝了SD卡的真實設備。 沒有模擬器。 Android 2.2。 如果我自己創建目錄,問題將不會消失:(
要么:
您的代碼還可以,但是仍然可以添加是否插入sdcard的檢查,如果運行此代碼並且未插入sdcard,則會拋出異常,良好的作法是您應該始終捕獲異常。 您可以通過以下代碼檢查sdcard ...
if (android.os.Environment.getExternalStorageState().equals
(android.os.Environment.MEDIA_MOUNTED))
{
//code or logic if sd card is inserted....
}
else
{
Log.e("Exception","SD Card not found!");
}
所有答案都是必需的,但如果是三星設備,則需要在路徑后附加“ / external_sd /”,因為他們認為自己需要三思而后行並破壞API:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.