Java File.delete不';不要删除文件
在单元测试中,我在temp文件夹中创建了一个文件,在测试之后我想删除它们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
@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我想知道为什么它没有抛出任何东西,很抱歉没有直接写出来^^^“谢谢,现在我看到了异常。以前是读者,我没有关闭它。非常感谢。对不起,现在不能投票,需要更多的声誉。