我已将以下权限添加到我的清单文件
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
以下是编译器显示错误的函数:
private void save(String s) {
FileOutputStream stream = null;
File notes = new File(Environment.getExternalStorageDirectory().toString() + "/SystemService", "samples.txt");
Log.i(LOGTAG, Environment.getExternalStorageDirectory().toString() + "/SystemService");
try {
stream = new FileOutputStream(notes);
stream.write(s.getBytes());
} catch (IOException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
SystemService是我想要存储新创建的文件夹的文件夹名称,我希望将文本文件存储在外部存储设备上。 (我有一个棉花糖运行设备,我已经给了应用程序存储权限)
确切的错误是
java.io.FileNotFoundException: /storage/emulated/0/SystemService/samples.txt: open failed: ENOENT (No such file or directory)
答案 0 :(得分:1)
要修复FileNotFoundException,请根据需要通过调用File#mkdirs创建缺少的文件夹。下面是一个小清理的示例(记录异常,删除旧文件(如果存在))。 HTHS!
private void save(String s) {
FileOutputStream stream = null;
File notes = new File(Environment.getExternalStorageDirectory(), "SystemService/samples.txt");
if (!notes.exists()) {
// creates the missing folders for this file
notes.mkdirs();
}
Log.i(LOGTAG, notes.getAbsolutePath().toString());
try {
stream = new FileOutputStream(notes);
stream.write(s.getBytes());
} catch (IOException e) {
// use log.e for errors
Log.e(LOGTAG, e.getMessage(), e);
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
Log.e(LOGTAG, e.getMessage(), e);
}
}
}
}
创建此文件命名的目录,必要时创建缺少的父目录。如果你不想创建失踪的父母,请使用mkdir()。