原因是jvm占用着文件 (你自己可以手动删除一下,如果删除不了,就是被占用了)
解决方案:在执行该方案前把垃圾回收一下,System.gc();
eg1;
File file =new File(new SystemParameterBeans().getSystemParameterValue("SBWJCFLJ")+"/gyscptp/"+equipementId+"/thumb/"+cptp);
System.gc();
file.delete();
eg2:(这种写法实在jsp中的调用java方法的写法)
该方法可以删除制定目录或者文件(及其子目录),运用了递归的方法
<%! public static void deleteAll(File path) {
System.gc();
if (!path.exists()) //路径存在
return;
if (path.isFile()) { //是文件
path.delete();
return;
}
File[] files = path.listFiles();//如果里面有目录会继续遍历该目录的
for (int i = 0; i < files.length; i++) {
deleteAll(files[i]);
}
path.delete();
}
%>
为什么一定要用递归:该业务的特殊性,需要重新遍历该方法