在java中解压缩后删除zip文件
如何删除java中的zip文件? file.delete方法返回false。为什么?在java中解压缩后删除zip文件
File file = new File("/mibook/"+mFilename+"/"+mZipname.toString());
boolean deleted = file.delete();
编辑:
规则“目录应该删除之前清空。”它适用于压缩文件?
我的文件解压码
public void unzip() throws IOException {
FileInputStream fin=null;
ZipInputStream zin=null;
File file =null;
ZipEntry ze ;
FileOutputStream fout=null;
try{
System.out.println(_zipFile);
System.out.println(_location);
fin = new FileInputStream(_zipFile);
zin = new ZipInputStream(fin);
ze= null;
byte[] buffer = new byte[1024];
int length;
while ((ze = zin.getNextEntry()) != null) {
file = new File((_location +"/" + ze.getName()));
file.getParentFile().mkdirs();
fout= new FileOutputStream(_location + ze.getName());
while ((length = zin.read(buffer))>0) {
fout.write(buffer, 0, length);
}
zin.closeEntry();
fout.close();
}
zin.close();
}catch(Exception e) {
Log.e("Decompress", "unzip", e);
}
finally {
fin.close();
zin.close();
fout.close();
}
}
如果file.delete()
返回false,那么我的猜测是,另一个进程有拉链打开文件 - 甚至可能是你自己的过程。
- 检查您是否有正确的路径,例如
file.exists()
返回什么? - 检查你有权限删除该文件作为用户运行应用程序
- 检查你没有打开的句柄文件代码中(例如,你刚刚从它读,而不是关闭输入流?)
- 检查你没有在文件中一个桌面应用程序
@jon在我的代码中,我只是下载一个zip文件,然后解压到其他位置,然后我尝试删除zip文件。任何条件被侵犯?如果是这样,我能从那恢复吗? – vnshetty 2011-03-07 06:35:59
假设你在Java中完成了所有这些工作,最可能的问题是你的代码仍然打开ZipStream。 – 2011-03-07 06:54:41
@vnshetty:我同意Stephen的观点。我怀疑你没有关闭某处的流。尽管我们看不到您的代码,但我们无法分辨。 – 2011-03-07 06:58:34
试图删除您已经创建了一个文件时,这是很常见的打开。请务必close
您用来创建解压缩文件的FileWriter。
如果你不知道在哪里关闭文件,最好的方法是打电话file.deleteOnExit()
即使你不小心留下了一些文件句柄,它也应该成功。
file.deleteOnExit()不工作..我编辑了我的任务。 – vnshetty 2011-03-07 06:57:02
您必须确保关闭ZipFile。
比如我有:
ZipFile zFile = new ZipFile("blah");
//lots-o-code
zFile.close();
File file = new File("blah");
file.delete();
用途:FileUtils.delete(yourFile);
这纠正了我的问题
请发表您已经使用的代码。 – 2011-03-07 06:26:37
@Abhinav:编辑我的问题 – vnshetty 2011-03-07 06:32:36
为了更快地获得更好的帮助,请发布SSCCE(http://pscode.org/sscce.html)。考虑到问题代码下载Zip,您可以使用我的站点上的basicservice.zip文件(http://pscode.org/jws/api.html#bs),它小于3Kb。 – 2011-03-07 06:45:25