我的代码有问题,应该将一些数据字符串写入我的SD卡。我用一个班来做这个:
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()中捕获一个exeption,说“权限被拒绝”。实际上,我在清单中设置了WRITE_EXTERNAL_STORAGE的权限。所以 - 我做错了什么!?
其他信息:安装了SD卡的真实设备。没有模拟器。 android 2.2。如果我自己创建了这个目录,问题就不会消失:(
答案 0 :(得分:2)
或者:
答案 1 :(得分:1)
你的代码还可以但是你仍然可以添加一个是否插入sdcard的检查,如果你运行这个代码并且没有插入sdcard那么它会抛出一个异常,好的做法就是你应该总是抓住exptions。 您可以通过以下代码检查SD卡...
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!");
}
答案 2 :(得分:0)
需要所有答案,但如果它是三星设备,则需要附加" / external_sd /"走到路上 - 因为他们认为他们需要用我们的思想愚弄并打破API: