Метод в Java для создания файла в месте, создание каталогов при необходимости? - PullRequest
6 голосов
/ 18 ноября 2009

Я пытаюсь написать файл, используя java.io, где я пытаюсь создать его в местоположении "some/path/to/somewhere/then-my-file". Когда файл создается, любой из каталогов на пути может существовать или не существовать. Вместо того, чтобы генерировать IOException, поскольку таких каталогов нет, я бы хотел, чтобы каталоги создавались прозрачно, как и когда это необходимо.

Существует ли метод, который создаст какие-либо каталоги, необходимые для записи файла? Я ищу что-то в Java SDK, или в облегченной библиотеке, которую можно добавить в путь к классам, например, Apache Commons IO.

P.S. Для ясности, я уже написал решение, которое работает для довольно узкого способа, которым я его тестирую, поэтому мне не нужны предложения о том, как написать метод, который я ищу. Я ищу метод, который был бы достаточно хорошо протестирован и кроссплатформенный.

Ответы [ 3 ]

25 голосов
/ 18 ноября 2009

new File("some/path/to/somewhere/then-my-file").getParentFile().mkdirs()

2 голосов
/ 20 июня 2013

Гуава также имеет Files.createParentDirs (файл) .

2 голосов
/ 12 апреля 2013

Поскольку в вопросе также упоминалась библиотека Apache Common IO , я сообщу в следующем решении, которое использует эту симпатичную библиотеку:

File file = new File("...  the directory path ..."); 
FileUtils.forceMkdir(file);

В этом решении используется класс FileUtils из пакета org.apache.commons.io и метод forceMkdir, который " создает каталог, включая любые необходимые, но не существующие родительские каталоги".

...