一般来说 java file.delete失败 有以下几个原因:
1.看看是否被别的进程引用,手工删除试试。
2.file是文件夹 并且不为空,有别的文件夹或文件。
3.极有可能有可能自己前面没有关闭此文件的流 。
如:
public static void unZipFromFile(File file){
try {
ZipFile zipFile = new ZipFile(file);
Enumeration e = zipFile.getEntries();
ZipEntry zipEntry = null;
String outPutDictroy = file.getName();
createDirectory(outPutDictroy, "");
while (e.hasMoreElements()) {
zipEntry = (ZipEntry) e.nextElement();
System.out.println("unziping "+zipEntry.getName());
if(zipEntry.isDirectory()){
String name = zipEntry.getName();
name= name.substring(0, name.length()-1);
File outPutFile = new File(outPutDictroy+name);
outPutFile.mkdir();
System.out.println("创建目录:"+outPutDictroy+name);
}else{
String name = zipEntry.getName();
name = name.replace('\\', '/');
if(name.indexOf("/")!=-1){
createDirectory(outPutDictroy, name.substring(0, name.lastIndexOf("/")));
name=name.substring(name.lastIndexOf("/")+1,name.length());
}
File f = new File(outPutDictroy + File.separator + zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out=new FileOutputStream(f);
byte[] by = new byte[1024];
int c;
while ( (c = in.read(by)) != -1) {
out.write(by, 0, c);
}
out.close();
in.close();
}
}
zipFile.close(); //如果不关闭该流,则无法删除该文件
} catch (IOException e) {
e.printStackTrace();
}
}
PS:转载自一下文章,略作修改: