広告

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」をご参照ください。


関連記事

ページの先頭へ