Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как создать папку

Короткий ответ

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() — Создаёт папку вместе со всеми недостающими родительскими папками.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.