[英]java.io.FileNotFoundException: /storage/emulated/0/Notes/fact50Result.txt: open failed ENOENT (No such file or directory)
[英]Android - java.io.FileNotFoundException: /storage/emulated/0/Notes/File.txt: open failed: ENOENT (No such file or directory)
我发现很多主题都有同样的问题,但他们无法解决我的问题。 我最初写一个文件如下:`
File root = new File(Environment.getExternalStorageDirectory(), "Notes");
if (!root.exists()) {
root.mkdirs();
}
File notefile = new File(root, sFileName);
FileWriter writer = null;
try {
writer = new FileWriter(notefile);
} catch (IOException e1) {
e1.printStackTrace();
}
try {
writer.append(sBody);
} catch (IOException e1) {
e1.printStackTrace();
}
try {
writer.flush();
} catch (IOException e1) {
e1.printStackTrace();
}
try {
writer.close();
} catch (IOException e1) {
e1.printStackTrace();
}
不要担心 try 和 catch 块,我稍后会清除它们:D。 这是应该在同一目录中工作的阅读器(sdcard的“Notes”,如果它不存在,将被创建),读取文件,并将其放在通知上,如您所见:`
File root = new File(Environment.getExternalStorageDirectory(), "Notes");
if (!root.exists()) {
root.mkdirs();
}
File file = new File(root, "Nota.txt");
//Read text from file
text = new StringBuilder();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
text.append(line);
text.append('\n');
}
br.close() ;
}catch (IOException e) {
e.printStackTrace();
}
我真的不明白为什么我会遇到这个问题,我什至尝试使用
getExternalStorageDirectory().getAbsolutePath()
但没有成功。
有人能帮我吗?
当您执行以下操作时,您已尝试使用调试器检查 root 是否存在:
File root = new File(Environment.getExternalStorageDirectory(), "Notes");
if (!root.exists()) {
root.mkdirs();
}
我不认为它会在您写入文件时创建文件夹
要在外部存储中写入文件,您需要启用 WRITE_EXTERNAL_STORAGE 权限。
为什么要尝试在外部存储中写入文件?
我的意思是,如果您只希望此文件用于您的应用程序,则使用 context.getExternalDirs() 来获取您应用程序的沙箱,它不需要写权限,高于 android 4.2(Jelly bean)。
如果您想将文件共享给其他应用程序,您就做对了。
并且在写入文件之前,请检查是否以编程方式挂载了外部存储。
我使用了 Android 的SharedPreferences 。 我将数据存储在 MainActivity 并在我的类中接收如下:
主要活动
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = prefs.edit(); editor.putString("string_id", InputString); //InputString: from the EditText editor.commit();
在我的课堂上获取我的数据
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); String data = prefs.getString("string_id", "no id"); //no id: default value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.