版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011068702/article/details/81780363
1 问题
在sdcard目录下面创建了一个文件提示下面的错误
android.system.ErrnoException: open failed: ENOENT (No such file or directory)
2 分析
错误代码是如下
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
try {
File dir = new File(path + "/***/***/***/");
if (!dir.exists()) {
dir.mkdir();
}
File file = new File(path + "/***/***/***/", fileName);
if (file.exists()) {
return file;
}
if (file.createNewFile()) {
return file;
}
} catch (Exception e) {
return null;
}
return null;
}
但是部分地方能正确运行
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
try {
File dir = new File(path + "/***/***/");
if (!dir.exists()) {
dir.mkdir();
}
File file = new File(path + "/***/***/", fileName);
if (file.exists()) {
return file;
}
if (file.createNewFile()) {
return file;
}
} catch (Exception e) {
return null;
}
return null;
}
特么权限肯定没问题,提示上面鸟错误,说创建文件失败,原来是我mkdir搞错了,
mkdir只能创建一级目录,上面正常用mkdir,是因为前面的目录已经创建好了,所以/***/***/没毛病
mkdirs能创建多级目录,把上面的创建多级目录的mkdir改成mkdirs函数就可以了