【发布时间】:2014-03-12 23:30:09
【问题描述】:
我正在尝试在 Android 中创建并写入外部文件。我的最低 SDK 是 14,我的目标 SDK 是 18。我在清单中的正确位置拥有 WRITE_EXTERNAL_STORAGE 权限。以下是我创建并设置要创建的文件的文件路径的部分:
String state = Environment.getExternalStorageState();
if(!state.equals(Environment.MEDIA_MOUNTED)) {
textView.setText("No external storage mounted");
} else {
File externalDir = Environment.getExternalStorageDirectory();
File dir = new File(externalDir.getAbsolutePath() + "/tests-folder");
dir.mkdir();
if(!dir.exists()) {
Log.i(null, "Does not exist"); // This gets printed - Why?
}
File textFile = new File(dir, "test.txt");
try {
writeTextFile(textFile, "This is a test!");
String text = readTextFile(textFile);
textView.setText(text);
} catch (IOException ex){
textView.setText("Something went wrong!" + ex.getMessage());
}
}
我不断收到错误消息“出了点问题!/storage/sdcard0/tests-folder/test.txt:打开失败:ENOENT(没有这样的文件或目录)。 writeTextFile() 方法是:
private void writeTextFile(File file, String text) throws IOException {
BufferedWriter writer = new BufferedWriter(new FileWriter(file)); // When I debug, it comes up until here and then returns with the exception
writer.write(text);
writer.close();
}
当它到达 writeTextFile() 方法的第一行时,代码返回异常。我的猜测是文件没有被创建。打印日志行“不存在”。为什么是这样?我用手机和模拟器都试过了。我在安装和检查后尝试断开手机连接,但没有用。
如果我修改文件路径以在外部目录的根文件夹中创建文件,则会收到 EACCES Permission denied 错误。
【问题讨论】:
-
您可以尝试使用
dir.mkdirs();,如果它不存在,它将创建整个路径,而不仅仅是文件夹。 -
我都试过了 - 没用。
标签: android