在Windows中,有一个known bug,其中文件夹可以具有只读属性。
我有一个启用了此属性的文件,需要删除它。但是File.delete删除此文件夹,而File.delete不能删除。
这里有一个样本可以重现我的问题。我要删除的文件夹为空
public static void main(String[] args) throws IOException {
File tmpDir = new File(System.getProperty("java.io.tmpdir"));
File someDir = new File(tmpDir, "someDir");
Files.setAttribute(someDir.toPath(), "dos:readonly", true);
// someDir.delete(); //ok
Files.delete(someDir.toPath()); //fail
}
根据this post,Files.delete似乎更合适,但在我看来,这是行不通的。
在这种情况下,我可以将属性设置为false,我很好,但是在这两种方法之间做正确的选择是什么?如果一个失败,我应该尝试同时使用两者吗?