Path path = Paths.get("D:/tmp/a/aa/aaa");
Files.delete(path);
path = Paths.get("D:/tmp/a/aa");
Files.delete(path);
これが私が得ている例外です:
Exception in thread "main" java.nio.file.DirectoryNotEmptyException: D:\tmp\a\aa
at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:264)
at sun.nio.fs.AbstractFileSystemProvider.delete(AbstractFileSystemProvider.java:103)
at java.nio.file.Files.delete(Files.java:1077)
at test.Test.main(Test.java:44)
ただし、フォルダー内にファイル/フォルダーはありませんaa
。
この動作は、Windows エクスプローラー (ここ) を使用してフォルダーにアクセスし、ルート ディレクトリaa
に移動したときに観察されます。D:\
エクスプローラー ウィンドウを閉じると、このプログラムは正常に動作します。
Windowsがフォルダーをロックすることがあることは知っていますが、その場合でも例外メッセージjava.nio.file.DirectoryNotEmptyException: D:\tmp\a\aa
が間違っているようです