Ответ 1
Вы должны использовать mkdirs() с s, если вы хотите создать несколько каталогов. Вероятно, также стоит проверить, что вы можете записать() в это место, поскольку некоторые места разрешены. Оба они находятся в классе File
Я использую 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()
, имеет ту же проблему.
Вы должны использовать mkdirs() с s, если вы хотите создать несколько каталогов. Вероятно, также стоит проверить, что вы можете записать() в это место, поскольку некоторые места разрешены. Оба они находятся в классе File
его obj.mkdirs()
взгляните на это:
File f = new File("non_existing_dir/someDir");
System.out.println(f.mkdir());
System.out.println(f.mkdirs());
Первая печать не создает каталог и возвращает false
, но вторая делает и возвращает true
похоже, что вам нужно немного поработать над вашим путем, поскольку это не похоже на то, что File выведет "abc."
Кроме того, убедитесь, что у вас есть разрешения на путь, который вы пытаетесь создать каталог. Если вы этого не сделаете, это провалится. Прошло некоторое время с тех пор, как я играл с Java, поэтому не уверен, что вам нужно будет делать mkdir, называет весь путь по пути (т.е./здесь/,/here/now-here/,/here/now- здесь/окончательный) или нет. Думайте, что это может быть рекурсивным, но это стоит проверить.
На самом деле, глядя на другие ответы, похоже, что mkdirs будет рекурсивным, mkdir - нет. Я бы пошел с mkdirs, особенно если вход не будет известен с самого начала, иначе вы в конечном итоге напишите функцию с mkdir, которая делает то же самое.
В вашем случае вы можете использовать метод 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
Вызов единственного file.mkdirs()
часто не работает.
назвать это в оценке, такой как -
if(file.mkdirs()){ //do something}
Или, в назначении, таком как -
boolean result = file.mkdirs();
mkdir нужен абстрактный путь, а не относительный путь. попробуйте использовать...
File f2 = new File (f1, "C:\\");
... например.
Из Java DOC:
public boolean mkdir()
Создает каталог с именем этого абстрактного пути.
Возврат:
true тогда и только тогда, когда каталог был создан; false иначе
Броски:
SecurityException - если существует менеджер безопасности и его метод SecurityManager.checkWrite(java.lang.String) не позволяет создать именованный каталог