Java java.nio.file.Files createDirectory()Метод

Java File Java java.nio.file.Files


java.nio.file.Files.createDirectory()— это служебный метод в пакете Java NIO (New I/O) для создания нового каталога. Он принадлежитjava.nio.file.Files— служебный класс, предоставляющий простой и безопасный способ создания одного каталога.

Определение метода

public static Path createDirectory(Path dir, FileAttribute<?>... attrs) throws IOException

Описание параметра

  • dir: путь каталога, который нужно создать (объект Path)
  • attrs(Необязательно): необязательный список FileAttribute для установки атрибутов каталога (таких как разрешения)

Возвращаемое значение

Возвращает объект Path созданного каталога

Исключения

  • IOException: если возникает ошибка ввода-вывода
  • FileAlreadyExistsException: если каталог уже существует
  • SecurityException: если недостаточно прав для создания каталога

Пример базового использования

Пример

import java.nio.file.*;

public class CreateDirectoryExample {
    public static void main(String[] args) {
        Path path = Paths.get("C:/test/new_directory");
       
        try {
            Files.createDirectory(path);
            System.out.println("Каталог успешно создан: " + path);
        } catch (IOException e) {
            System.err.println("Не удалось создать каталог: " + e.getMessage());
        }
    }
}

Характеристики метода

1. Создание одного каталога

createDirectory()Можно создать только один каталог. Если родительский каталог в пути не существует, будет выброшено исключениеNoSuchFileException。

2. Атомарная операция

Создание каталога — атомарная операция; она либо полностью успешна, либо полностью неудачна.

3. Проверка существования каталога

Если каталог уже существует, метод выбросит исключениеFileAlreadyExistsException。


Отличие от createDirectories()

FilesКласс также предоставляетcreateDirectories()метод. Основные различия между ними:

Характеристика createDirectory() createDirectories()
Создать один каталог Да Да
Создание многоуровневых каталогов нет Да
Когда родительский каталог не существует Выбрасывает исключение Автоматически создаёт родительские каталоги
Когда каталог уже существует Выбрасывает исключение Не выбрасывает исключение

Продвинутое использование

1. Настройка атрибутов каталога

Пример

import java.nio.file.attribute.PosixFilePermissions;
import java.nio.file.attribute.PosixFilePermission;
import java.util.Set;

Path path = Paths.get("/path/to/new_directory");
Set<PosixFilePermission> perms = PosixFilePermissions.fromString("rwxr-x---");
FileAttribute<Set<PosixFilePermission>> attr = PosixFilePermissions.asFileAttribute(perms);

Files.createDirectory(path, attr);

2. Обработка исключений

Пример

try {
    Files.createDirectory(path);
} catch (FileAlreadyExistsException e) {
    System.err.println("Каталог уже существует: " + path);
} catch (NoSuchFileException e) {
    System.err.println("Родительский каталог не существует: " + e.getFile());
} catch (IOException e) {
    System.err.println("Other I/O error: " + e.getMessage());
}

Лучшие практики

  1. Проверьте, существует ли каталог: перед попыткой создания можно использоватьFiles.exists(path)для проверки
  2. Обрабатывайте все возможные исключения: особенноFileAlreadyExistsExceptionиNoSuchFileException
  3. **Рассмотрите возможность использования createDirectories()**: если нужно создать многоуровневые каталоги
  4. Установите соответствующие права доступа: особенно в многопользовательских системах

Итог

Files.createDirectory()является рекомендуемым методом в Java NIO для создания одного каталога. Он предоставляетFile.mkdir()более широкую функциональность и лучшую обработку исключений. Понимание этого метода и егоcreateDirectories()отличие, которое может помочь разработчикам более эффективно выполнять операции с файловой системой.

Java File Java java.nio.file.Files

Другие расширения