我正在尝试使用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
被打印在logs.Cant中理解为什么......感谢任何帮助。
更新
我再次尝试了相同的代码,这次它说testJar.jar deleted
现在我很困惑发生了什么
答案 0 :(得分:1)
我发现这个问题已经神奇地消失了,但是一些常见的故障排除提示:
首先;尝试创建和删除另一个文件并检查文件权限/所有权。
检查另一个进程是否未保留该文件:
$ lsof filename
测试基础操作系统调用。
File.delete()将委托给底层操作系统,通常最终会调用remove(或取消链接)。如果您使用OpenJDK,您应该能够浏览源代码。如果没有,看看你是否可以追踪“幕后”发生的事情。
编写一个small snippet,只需执行此调用,并查看当您尝试删除此文件时操作系统的行为。
答案 1 :(得分:0)
如果您尝试删除的文件不存在,则文件删除失败。出于安全原因也失败(在本地系统上执行的权限不足)
例如,如果正在运行的应用程序使用jar,或者通过工具(如防病毒软件)进行分析,或者通过工具(如防病毒软件)进行分析,则会阻止这种情况,...