在设备上创建递归目录失败
Recursive directory creation fails on device
我的代码 运行 在模拟器中,但在 Android 上崩溃并出现 FileNotFoundException
,因为它试图 FileSystemStorage#openOutputStream
在一个不存在的目录中。我在使用
之前递归地创建了所有需要的目录
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
所以我看不出有什么问题。有什么想法吗?
双斜杠存在(可能仍然存在)问题。我的路径是
/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
并且工作正常。
我的代码 运行 在模拟器中,但在 Android 上崩溃并出现 FileNotFoundException
,因为它试图 FileSystemStorage#openOutputStream
在一个不存在的目录中。我在使用
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
所以我看不出有什么问题。有什么想法吗?
双斜杠存在(可能仍然存在)问题。我的路径是
/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
并且工作正常。