Java java.nio.file.Files createDirectory()Метод
java.nio.file.Files.createDirectory()— это служебный метод в пакете Java NIO (New I/O) для создания нового каталога. Он принадлежитjava.nio.file.Files— служебный класс, предоставляющий простой и безопасный способ создания одного каталога.
Определение метода
Описание параметра
dir: путь каталога, который нужно создать (объект Path)attrs(Необязательно): необязательный список FileAttribute для установки атрибутов каталога (таких как разрешения)
Возвращаемое значение
Возвращает объект Path созданного каталога
Исключения
IOException: если возникает ошибка ввода-выводаFileAlreadyExistsException: если каталог уже существуетSecurityException: если недостаточно прав для создания каталога
Пример базового использования
Пример
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.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. Обработка исключений
Пример
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());
}
Лучшие практики
- Проверьте, существует ли каталог: перед попыткой создания можно использовать
Files.exists(path)для проверки - Обрабатывайте все возможные исключения: особенно
FileAlreadyExistsExceptionиNoSuchFileException - **Рассмотрите возможность использования createDirectories()**: если нужно создать многоуровневые каталоги
- Установите соответствующие права доступа: особенно в многопользовательских системах
Итог
Files.createDirectory()является рекомендуемым методом в Java NIO для создания одного каталога. Он предоставляетFile.mkdir()более широкую функциональность и лучшую обработку исключений. Понимание этого метода и егоcreateDirectories()отличие, которое может помочь разработчикам более эффективно выполнять операции с файловой системой.
Java java.nio.file.Files