【发布时间】:2013-02-05 10:36:24
【问题描述】:
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 似乎是错误的
【问题讨论】:
-
你检查过那个文件夹里有没有隐藏文件吗?
-
If i close the explorer widow, this program is working fine.Explorer 可能正在锁定目录。随意向 oracle 提出关于该消息的错误报告。值得一提的是,Java 不识别任何 FS 锁定,因为它主要独立于操作系统。 -
@Hbcdev 没有隐藏文件/文件夹