Java File.delete不';不要删除文件

Java File.delete不';不要删除文件,java,java-io,filewriter,Java,Java Io,Filewriter,在单元测试中,我在temp文件夹中创建了一个文件,在测试之后我想删除它们 @After public void destroy() throws IOException { if (!new File(tempFile.toAbsolutePath().getParent().toString() + "\\file1.tmp").delete()) { System.out.println("file1.tmp n

在单元测试中,我在temp文件夹中创建了一个文件,在测试之后我想删除它们

 @After
    public void destroy() throws IOException {
        if (!new File(tempFile.toAbsolutePath().getParent().toString() + "\\file1.tmp").delete()) {
            System.out.println("file1.tmp not deleted");
        }
        if (!new File(tempFile.toAbsolutePath().getParent().toString() + "\\file2.log").delete()) {
            System.out.println("file2.log not deleted");
        }
        if (!new File(tempFile.toAbsolutePath().getParent().toString() + "\\file3.log").delete()) {
            System.out.println("file3.log not deleted");
        }
        if (!new File(tempFile.toAbsolutePath().getParent().toString() + "\\file4.log").delete()) {
            System.out.println("file4.log not deleted");
        }
    }
它删除文件1-3没有任何问题,但我没有删除文件4。 通常File.delete应该抛出IOException,但它只返回false

我对每个文件都使用相同的方法,在创建和写入文件后,writer将关闭

我希望我没有忘记任何信息

通常,
File.delete
应该抛出一个
IOException
,但它只返回false

啊哼


File.delete如果未能删除文件1,则不会引发
IOException
。它返回
false

至于为何未能删除该文件,最可能的解释是:

  • 文件被锁定,因为有东西打开了它。Windows不允许删除已锁定的文件

  • 应用程序没有删除到期文件所需的(操作系统级)访问权限;i、 这是一个文件或目录权限问题

如果要找出删除失败的原因,解决方案是将代码更改为使用
Path
Files.delete(Path)
文件中的方法设计为抛出异常。在这种情况下,消息应该给出删除失败的原因



1-方法记录为引发的唯一异常是
SecurityException
,只有当
SecurityManager
处于活动状态时才会引发该异常。

文件。delete()
不会引发
IOException
s。如果删除失败,则返回
false
。如果希望异常能够指示原因,可以使用
java.nio.Files
类中的
delete()
方法。您为什么认为它应该抛出IOException?政府没有提到这一点,现在的问题是什么?为什么它没有抛出或者为什么文件没有被删除?@fredrik我读了“Note”-部分错了。我想这意味着,我使用的delete方法抛出了一个IOException。@Henry我想知道为什么它没有抛出任何东西,很抱歉没有直接写出来^^^“谢谢,现在我看到了异常。以前是读者,我没有关闭它。非常感谢。对不起,现在不能投票,需要更多的声誉。