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

时间:2018-11-13 03:42:48

标签: java io codenameone mkdirs

我的代码在模拟器中运行,但是在尝试进入不存在的目录中的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

所以我看不到有什么问题。有想法吗?

1 个答案:

答案 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

并正常工作。