Windows7中的Java 7文件删除
以下是我得到的一个例外:Windows7中的Java 7文件删除,java,windows-7,Java,Windows 7,以下是我得到的一个例外: Path path = Paths.get("D:/tmp/a/aa/aaa"); Files.delete(path); path = Paths.get("D:/tmp/a/aa"); Files.delete(path); 但是aa文件夹中没有文件/文件夹 当我使用windows资源管理器(此处为aa)访问文件夹并移动到D:\根目录时,就会观察到这种行为 如果我关闭浏览器窗口,这个程序工作正常 我知道windows有时会锁定文件夹
Path path = Paths.get("D:/tmp/a/aa/aaa");
Files.delete(path);
path = Paths.get("D:/tmp/a/aa");
Files.delete(path);
但是aa
文件夹中没有文件/文件夹
当我使用windows资源管理器(此处为aa
)访问文件夹并移动到D:\
根目录时,就会观察到这种行为
如果我关闭浏览器窗口,这个程序工作正常
我知道windows有时会锁定文件夹,即使在这种情况下,异常消息
java.nio.file.DirectoryNotEmptyException:D:\tmp\a\aa
似乎是错误的是的,错误消息是错误的,但是如果另一个进程打开了句柄,windows也不会让文件或文件夹被删除。这无法从Java中修复 另一个技巧是,使用“/”而不是“\\”,因为Java应该是独立于平台的,而“/”在linux和windows上都可以识别。您是否检查过该文件夹中是否有任何隐藏文件?如果关闭浏览器窗口,该程序工作正常。
浏览器可能正在锁定目录。请随时向oracle提交有关此消息的错误报告。值得一提的是,Java不识别任何FS锁定,因为它主要独立于操作系统。@Hbcdev没有隐藏文件/folders或者,更好的是,使用File.separator
为当前系统获取正确的字符,因为至少在上千年的Windows NT中,Windows可以理解/in(大多数)路径名。20年后,仍然有人写双反斜杠-丑陋@这应该是评论,而不是回答
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)