Java java.nio.file.Files createDirectory()メソッド
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: I/O エラーが発生した場合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());
}
}
}
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);
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("その他の I/O エラー: " + e.getMessage());
}
Files.createDirectory(path);
} catch (FileAlreadyExistsException e) {
System.err.println(ディレクトリが既に存在します: + path);
} catch (NoSuchFileException e) {
System.err.println(親ディレクトリが存在しません: + e.getFile());
} catch (IOException e) {
System.err.println("その他の I/O エラー: " + e.getMessage());
}
ベストプラクティス
- ディレクトリが存在するか確認する: 作成を試みる前に、 を使用して
Files.exists(path)確認できます - 考えられるすべての例外を処理する: 特に
FileAlreadyExistsExceptionとNoSuchFileException - **createDirectories() の使用を検討する**: 多段階のディレクトリを作成する必要がある場合
- 適切な権限を設定する: 特にマルチユーザーシステムでは
まとめ
Files.createDirectory()は Java NIO で単一のディレクトリを作成するための推奨メソッドであり、従来のFile.mkdir()よりも豊富な機能と優れた例外処理を提供します。このメソッドとcreateDirectories()の違いを理解することで、開発者はファイルシステム操作をより効果的に処理できます。
Java java.nio.file.Files