我正在尝试使用 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());
}
当我的代码被执行时,jar 文件被删除,但是 Delete operation is failed for testJar.jar
打印在日志中。无法理解为什么..任何帮助表示赞赏。
更新:
我再次尝试了相同的代码,这次它说 testJar.jar deleted
现在我很困惑发生了什么
最佳答案
我看到这个问题神奇地消失了,但一些一般的故障排除提示:
首先;尝试创建和删除另一个文件并检查文件权限/所有权。
检查另一个进程是否没有持有该文件:
$ lsof filename
测试底层操作系统调用。
File.delete() 将委托(delegate)给底层操作系统,通常最终会调用 remove (或取消链接)。如果你使用 OpenJDK,你应该可以浏览源代码。如果没有,看看您是否可以追踪“幕后”发生的事情。
写一个small snippet它只是执行此调用并查看操作系统在您尝试删除此文件时的行为。
关于java - 无法理解 File object.delete() 的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23212683/