Mkdir() не создает новый каталог

Я использую Eclipse и jdk1.7. Я делаю базовую программу с использованием обработки файлов, в которой должен быть создан выходной каталог внутри каталога. Но когда я запускаю программу, на выходе отображается false, а каталог не создается. Я думал, что вывод был ложным из-за наличия каталога с тем же именем, но это не причина. Поэтому мне нужна помощь. Вот мой код:

import java.io.File;

public class P {
    public static void main(String[] args) {
        File f1 = new File ("abc");
        File f2 = new File (f1,"abc");
        System.out.println(f2.mkdir());
    }
}

Его вывод является ложным, и все же каталог не создан. Как я могу решить эту проблему? Это не только в этой программе - каждая программа, в которой я вызываю метод mkdir(), имеет ту же проблему.

Ответ 1

Вы должны использовать mkdirs() с s, если вы хотите создать несколько каталогов. Вероятно, также стоит проверить, что вы можете записать() в это место, поскольку некоторые места разрешены. Оба они находятся в классе File

Ответ 2

его obj.mkdirs()

взгляните на это:

File  f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());

Первая печать не создает каталог и возвращает false, но вторая делает и возвращает true

Ответ 3

Создать пример каталога

похоже, что вам нужно немного поработать над вашим путем, поскольку это не похоже на то, что File выведет "abc."

Кроме того, убедитесь, что у вас есть разрешения на путь, который вы пытаетесь создать каталог. Если вы этого не сделаете, это провалится. Прошло некоторое время с тех пор, как я играл с Java, поэтому не уверен, что вам нужно будет делать mkdir, называет весь путь по пути (т.е./здесь/,/here/now-here/,/here/now- здесь/окончательный) или нет. Думайте, что это может быть рекурсивным, но это стоит проверить.

На самом деле, глядя на другие ответы, похоже, что mkdirs будет рекурсивным, mkdir - нет. Я бы пошел с mkdirs, особенно если вход не будет известен с самого начала, иначе вы в конечном итоге напишите функцию с mkdir, которая делает то же самое.

Ответ 4

В вашем случае вы можете использовать метод makedirectories в классе File.

File dir = new File("path name");
boolean isCreated = dir.mkdirs();

Здесь метод makedirectories создаст все каталоги, отсутствующие в пути, который представляет объект файла.

Источник и ссылка ниже (подробно объясняется).

http://www.flowerbrackets.com/create-directory-java-program/

https://docs.oracle.com/javase/6/docs/api/java/io/File.html#canWrite%28%29

Ответ 5

Вызов единственного file.mkdirs() часто не работает. назвать это в оценке, такой как -

if(file.mkdirs()){ //do something}

Или,  в назначении, таком как -

 boolean result = file.mkdirs();

Ответ 6

mkdir нужен абстрактный путь, а не относительный путь. попробуйте использовать...

File f2 = new File (f1, "C:\\");

... например.

Из Java DOC:

public boolean mkdir()

Создает каталог с именем этого абстрактного пути.

Возврат:

true тогда и только тогда, когда каталог был создан; false иначе

Броски:

SecurityException - если существует менеджер безопасности и его метод SecurityManager.checkWrite(java.lang.String) не позволяет создать именованный каталог