在设备上创建递归目录失败

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

并且工作正常。