如何在Files.delete和File.delete

时间:2018-07-13 13:55:10

标签: java delete-file

在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,我很好,但是在这两种方法之间做正确的选择是什么?如果一个失败,我应该尝试同时使用两者吗?

0 个答案:

没有答案