File.delete 不删除文件
File.delete doesn't delete file
在单元测试中,我在临时文件夹中创建了一个文件,在测试之后我想删除它们。
@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 但它只是 returns false。
我对每个文件都使用了相同的方法,写入器在创建并写入文件后关闭。
希望我没有忘记任何信息
Normally File.delete
should throw an IOException
but it just returns false.
咳咳……
如果 File.delete
无法删除文件 1,则不会抛出 IOException
。它returns false
.
至于删除文件失败的原因,最可能的解释是:
文件被锁定,因为有东西打开了它。 Windows 不允许您删除已锁定的文件。
应用程序没有删除文件所需的(OS 级别)权限;即是文件或目录权限问题。
如果您想找出删除失败的原因,解决方法是更改您的代码以使用 Path
和 Files.delete(Path)
。 Files
中的方法被设计成抛出异常。在这种情况下,消息应该给出删除失败的原因。
1 - 该方法被记录为抛出的唯一异常是 SecurityException
,它只有在 SecurityManager
处于活动状态时才会被抛出。
在单元测试中,我在临时文件夹中创建了一个文件,在测试之后我想删除它们。
@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 但它只是 returns false。
我对每个文件都使用了相同的方法,写入器在创建并写入文件后关闭。
希望我没有忘记任何信息
Normally
File.delete
should throw anIOException
but it just returns false.
咳咳……
如果File.delete
无法删除文件 1,则不会抛出 IOException
。它returns false
.
至于删除文件失败的原因,最可能的解释是:
文件被锁定,因为有东西打开了它。 Windows 不允许您删除已锁定的文件。
应用程序没有删除文件所需的(OS 级别)权限;即是文件或目录权限问题。
如果您想找出删除失败的原因,解决方法是更改您的代码以使用 Path
和 Files.delete(Path)
。 Files
中的方法被设计成抛出异常。在这种情况下,消息应该给出删除失败的原因。
1 - 该方法被记录为抛出的唯一异常是 SecurityException
,它只有在 SecurityManager
处于活动状态时才会被抛出。