2009-06-25 2 views
1

Каталоги some_folder, some_folder_1, some_folder_2 и some_folder_3 изначально не существуют.Java: правильный способ создания каталогов

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(); 
} 

Будет ли это хорошим способом для этого?

+0

Вы также можете проверить возвращаемое значение mkdirs(), чтобы гарантировать, что директор y был создан. – McDowell

ответ

6

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

File folder1 = new File("some_folder", "some_folder_1"); 
if (!folder1.exists()) { 
    folder1.mkdirs(); // returns a boolean 
} 
6

Ну вам не нужны тесты - 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(); 

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

+0

Чтобы добавить к этому, если у вас более 2 или 3 папок, вам может потребоваться рассмотреть петли и коллекции –

+0

Согласовано (в соответствии с ответом Карла - за исключением предпочтительно с брекетами :) –

1

или

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(); 
Смежные вопросы