[英]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.