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
似乎也是错误的
答案 0 :(得分:3)
是错误消息是错误的,但是Windows不会删除文件或文件夹,而是另一个进程打开句柄。这不能从Java修复。
答案 1 :(得分:2)
另一个提示,使用“/”而不是“\\”,因为Java应该是平台无关的,而“/”在linux和windows上都被识别。