在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(); 


    } 

} 

+1

请发表您已经使用的代码。 – 2011-03-07 06:26:37

+0

@Abhinav:编辑我的问题 – vnshetty 2011-03-07 06:32:36

+1

为了更快地获得更好的帮助,请发布SSCCE(http://pscode.org/sscce.html)。考虑到问题代码下载Zip,您可以使用我的站点上的basicservice.zip文件(http://pscode.org/jws/api.html#bs),它小于3Kb。 – 2011-03-07 06:45:25

如果file.delete()返回false,那么我的猜测是,另一个进程有拉链打开文件 - 甚至可能是你自己的过程。

  • 检查您是否有正确的路径,例如file.exists()返回什么?
  • 检查你有权限删除该文件作为用户运行应用程序
  • 检查你没有打开的句柄文件代码中(例如,你刚刚从它读,而不是关闭输入流?)
  • 检查你没有在文件中一个桌面应用程序
+1

@jon在我的代码中,我只是下载一个zip文件,然后解压到其他位置,然后我尝试删除zip文件。任何条件被侵犯?如果是这样,我能从那恢复吗? – vnshetty 2011-03-07 06:35:59

+0

假设你在Java中完成了所有这些工作,最可能的问题是你的代码仍然打开ZipStream。 – 2011-03-07 06:54:41

+0

@vnshetty:我同意Stephen的观点。我怀疑你没有关闭某处的流。尽管我们看不到您的代码,但我们无法分辨。 – 2011-03-07 06:58:34

试图删除您已经创建了一个文件时,这是很常见的打开。请务必close您用来创建解压缩文件的FileWriter。

如果你不知道在哪里关闭文件,最好的方法是打电话file.deleteOnExit()即使你不小心留下了一些文件句柄,它也应该成功。

+0

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);

这纠正了我的问题