Java : DirectoryNotEmptyException - API使用例
DirectoryNotEmptyException (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
APIドキュメントのおともにどうぞ。
概要
DirectoryNotEmptyException は、空ではないディレクトリを削除しようとすると投げられる例外です。
ディレクトリを削除するには、まずディレクトリ内のファイルおよびディレクトリをすべて削除する必要があります。
関連記事:ディレクトリを丸ごと削除
final var dir = Path.of("R:", "java-work", "dir");
System.out.println(dir); // R:\java-work\dir
final var file = dir.resolve(Path.of("aaa.txt"));
System.out.println(file); // R:\java-work\dir\aaa.txt
Files.createDirectories(dir);
Files.createFile(file);
// --- PowerShell ---
//PS R:\java-work> tree /F
//...
//R:.
//└─dir
// aaa.txt
// --- NG ---
try {
System.out.println("-- delete --");
Files.delete(dir);
} catch (DirectoryNotEmptyException e) {
System.out.println(e);
}
// 結果
// ↓
//-- delete --
//java.nio.file.DirectoryNotEmptyException: R:\java-work\dir
// --- OK ---
Files.delete(file);
Files.delete(dir);
System.out.println(Files.notExists(dir)); // true
他には、空ではないディレクトリに対して、StandardCopyOption.REPLACE_EXISTING を指定して移動やコピーしようとしても発生します。
final var src = Path.of("R:", "java-work", "src-dir");
final var dst = Path.of("R:", "java-work", "dst-dir");
System.out.println(src); // R:\java-work\src-dir
System.out.println(dst); // R:\java-work\dst-dir
Files.createDirectories(src);
Files.createDirectories(dst);
Files.createFile(dst.resolve(Path.of("aaa.txt")));
// --- PowerShell ---
//PS R:\java-work> tree /F
//...
//R:.
//├─dst-dir
//│ aaa.txt
//│
//└─src-dir
try {
System.out.println("-- move --");
Files.move(src, dst, StandardCopyOption.REPLACE_EXISTING);
} catch (DirectoryNotEmptyException e) {
System.out.println(e);
}
// 結果
// ↓
//-- move --
//java.nio.file.DirectoryNotEmptyException: R:\java-work\dst-dir
コンストラクタ
DirectoryNotEmptyException (String dir)
final var e = new DirectoryNotEmptyException("Dir!");
System.out.println(e); // java.nio.file.DirectoryNotEmptyException: Dir!
System.out.println(e.getFile()); // Dir!
FileSystemExceptionで宣言されたメソッド
getFile, getMessage, getOtherFile, getReason
「Java API 使用例 : FileSystemException」をご参照ください。
Throwableで宣言されたメソッド
addSuppressed, fillInStackTrace, getCause, getLocalizedMessage, getStackTrace, getSuppressed, initCause, printStackTrace, printStackTrace, printStackTrace, setStackTrace, toString
「Java API 使用例 : Throwable」をご参照ください。