Как создать папку
Короткий ответ
Files.createDirectories() создаёт папку вместе со всеми недостающими родительскими. Если папка уже есть, ошибки не будет:
void main() throws IOException {
Path dir = Path.of("data", "2026", "march");
Files.createDirectories(dir);
Files.createDirectories(dir);
IO.println(Files.isDirectory(dir));
}Результат:
trueОдна папка
createDirectory() создаёт только одну папку и выбрасывает исключение, если она уже существует:
void main() throws IOException {
Path dir = Path.of("cache");
Files.createDirectory(dir);
IO.println("created");
Files.createDirectory(dir);
}Результат:
created
Exception in thread "main" java.nio.file.FileAlreadyExistsException: cacheПеред записью файла
Создайте родительскую папку файла через getParent():
void main() throws IOException {
Path file = Path.of("reports", "q1", "summary.txt");
Files.createDirectories(file.getParent());
Files.writeString(file, "ok");
IO.println(Files.readString(file));
}Результат:
okВременная папка
createTempDirectory() создаёт папку с уникальным именем в системной временной папке:
void main() throws IOException {
Path tmp = Files.createTempDirectory("import-");
IO.println(tmp.getFileName());
}Результат:
import-12662471789010885702Имя каждый раз новое.
Частая ошибка
Склеивать путь через "/" или "\\" вручную. В Windows и Linux разделители разные. Path.of("data", "2026") и path.resolve("file.txt") подставляют правильный разделитель сами.
Функции из этого ответа
- Files.createDirectories() — Создаёт папку вместе со всеми недостающими родительскими папками.