Java: правильный способ создания каталогов - PullRequest
1 голос
/ 25 июня 2009

Каталоги some_folder, some_folder_1, some_folder_2 и some_folder_3 изначально не существуют.

File folder1 = new File("some_folder/some_folder_1"); 
File folder2 = new File("some_folder/some_folder_2"); 
File folder3 = new File("some_folder/some_folder_3"); 

if(!folder1.exists()) {
    folder1.mkdirs();
}

if(!folder2.exists()) {
    folder2.mkdirs();
}

if(!folder3.exists()) {
    folder3.mkdirs();
}

Это был бы хороший способ сделать это?

Ответы [ 3 ]

6 голосов
/ 25 июня 2009

Ну, вам не нужны тесты - mkdirs просто возвращает false, если каталог уже существует. Я бы предпочел использовать один «базовый» файл для some_folder, чтобы избежать жесткого кодирования слеша, даже если прямой слеш вероятен для работы на большинстве популярных платформ:)

File baseFolder = new File("some_folder");
new File(baseFolder, "some_folder_1").mkdirs();
new File(baseFolder, "some_folder_2").mkdirs();
new File(baseFolder, "some_folder_3").mkdirs();

Обратите внимание, что это не приведет к исключениям, если имена уже существуют, но в виде файлов вместо папок ...

6 голосов
/ 25 июня 2009

Не используйте разделитель пути, вместо этого используйте правильный конструктор:

File folder1 = new File("some_folder", "some_folder_1"); 
if (!folder1.exists()) {
    folder1.mkdirs(); // returns a boolean
}
1 голос
/ 25 июня 2009

или

String[] folders = {"some_folder_1", "some_folder_2", "some_folder_3"};
File root = new File("some_folder");
for (String folder: folders)
    new File(root, folder).mkdirs();
...