我收到此错误
java.io.FileNotFoundException: /data/data/com.example.app/cache/news.xml:打开失败: EISDIR(是一个目录)
使用此代码
try {
File cache = ctx.getCacheDir();
String s = cache.getAbsolutePath() + File.separator + path;
File f = new File(s);
File pf = f.getParentFile();
if (pf != null) {
pf.mkdirs();
}
if ( (pf.exists()) && (pf.isDirectory()) ) {
if ( (!f.exists()) || (!f.isFile()) ) {
f.createNewFile();
}
if ( (f.exists()) || (f.isFile()) ) {
FileOutputStream os = null;
os = new FileOutputStream(s, false);
if (os != null) {
SharedCode.sharedWriteTextFileToStream(str, os);
}
os.flush();
os.close();
}
}
}
catch (IOException e) {
String s = e.toString();
}
更新添加代码以删除与所需文件名匹配的目录(f any)+正确使用mkdirs似乎已解决了问题。接受最接近的答案。
答案 0 :(得分:9)
mkdirs()
不仅会创建指向该文件的目录,还会创建一个包含该文件指向的路径的目录。这就是createNewFile()
失败的原因。您需要在父文件上调用mkdirs()
:
File parent = f.getParentFile();
if (parent != null) parent.mkdirs();
答案 1 :(得分:1)
请注意
f.mkdirs();
您需要检查此语句的返回值。如果为true,则继续,否则路径不存在。