我的代码在模拟器中运行,但是在尝试进入不存在的目录中的FileNotFoundException
时,其FileSystemStorage#openOutputStream
在Android上崩溃。我在使用前递归创建所有需要的目录
private void ensureParentDirs(String file) {
final int j = file.lastIndexOf("/");
final String s = file.substring(0, j);
if (storage.isDirectory(s)) return;
storage.mkdir(s);
if (storage.isDirectory(s)) return;
ensureParentDirs(s);
storage.mkdir(s);
if (storage.isDirectory(s)) return;
Log.p("Cannot create directory: " + s);
}
应该像new File(file).getParentFile().mkdirs()
一样工作。可能是错误的,但是它也不应该在模拟器中运行,所以我将其称为错误。
我收到消息
Cannot create directory:
file:///data/user/0/my.package.name/files//dump/000/abcd
,但是已成功创建父目录(“ 000”)。使用adb shell
,我可以使用
mkdir /data/data/my.package.name/files/dump/000/abcd
所以我看不到有什么问题。有想法吗?
答案 0 :(得分:0)
存在(可能仍然存在)双斜杠的问题。我的路是
/dump/000/abcd
我通过
对其进行了转换path -> APP_HOME_PATH + "/" + path
进入
file:///data/user/0/my.package.name/files//dump/000/abcd
由于双斜杠而失败,而
dump/000/abcd
转换为
file:///data/user/0/my.package.name/files/dump/000/abcd
并正常工作。