Рекурсивное создание каталога завершается неудачно на устройстве - PullRequest
0 голосов
/ 13 ноября 2018

Мой код работает в симуляторе, но вылетает на 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

так что я не вижу, что не так. Есть идеи?

...