无法理解File object.delete()的工作原理

amu*_*093 12 java jar java-5

我试图使用java 5删除一个jar文件(因此Java 7中引入的Paths API不是一个选项).

我的代码:

String sep = File.separator;

File test = new File("."+ sep + "server" + sep + "lib" + sep + "testJar.jar");
if(test.delete())
{
    logger.log(Level.INFO,test.getName() + " deleted.");
}
else
{
    logger.log(Level.INFO,"Delete operation is failed for "+test.getName());
}
Run Code Online (Sandbox Code Playgroud)

当我的代码被执行时,jar文件被删除但是Delete operation is failed for testJar.jar被打印在logs.Cant中了解原因.感谢任何帮助.

更新: 我再次尝试相同的代码,这次它说testJar.jar deleted 现在我很困惑发生了什么

and*_*rel 1

我发现这个问题神奇地消失了,但有一些常规的故障排除提示:

\n\n

首先; 尝试创建和删除另一个文件并检查文件权限/所有权。

\n\n

检查另一个进程是否未保存该文件:

\n\n
$\xc2\xa0lsof filename\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试底层操作系统调用。

\n\n

File.delete() 将委托给底层操作系统,并且通常最终会调用删除(或取消链接)。如果您使用 OpenJDK,您应该能够浏览源代码。如果没有,看看你是否可以追踪“幕后”发生的事情。

\n\n

编写一个小片段来简单地执行此调用,并查看当您尝试删除此文件时操作系统的行为。

\n