Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中解压后删除zip文件_Java_Delete File - Fatal编程技术网

在java中解压后删除zip文件

在java中解压后删除zip文件,java,delete-file,Java,Delete File,如何在java中删除zip文件?file.delete方法返回false。为什么? File file = new File("/mibook/"+mFilename+"/"+mZipname.toString()); boolean deleted = file.delete(); 编辑: 规则“删除前目录应为空…”是否适用于zip文件 我的文件解压缩代码 public void unzip() throws IOException { FileInputStrea

如何在java中删除zip文件?file.delete方法返回false。为什么?

File file = new File("/mibook/"+mFilename+"/"+mZipname.toString());
boolean deleted = file.delete();
编辑:
规则“删除前目录应为空…”是否适用于zip文件

我的文件解压缩代码

   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,那么我猜另一个进程打开了zip文件,甚至可能是您自己的进程

  • 检查路径是否正确,例如,
    file.exists()
    返回什么
  • 检查您是否具有以运行应用程序的用户身份删除该文件的权限
  • 检查您的代码中是否没有打开的文件句柄(例如,您是否只是从中读取而没有关闭输入流?)
  • 检查您是否没有在桌面应用程序中打开该文件

这在尝试删除您创建的文件时非常常见。确保
关闭用于创建解压缩文件的FileWriter


如果您无法找到关闭文件的位置,最好的办法可能是调用
file.deleteOnExit()
,即使您意外地打开了几个文件句柄,该操作也会成功。

您必须确保关闭ZipFile

例如,我有:


使用:
FileUtils.delete(您的文件)


这纠正了我的问题

请发布您使用的代码。要更快获得更好的帮助,请发布SSCCE()。考虑到问题代码下载了一个Zip文件,您可以使用我网站上的basicservice.Zip文件(),它大约3Kb。jon在我的代码中,我只下载了一个Zip文件,然后解压缩到其他位置,然后我尝试删除Zip文件。违反了什么条件?如果是这样的话,我能从中恢复吗?假设你用Java做了所有这些,最可能的问题是你的代码仍然有ZipStream打开。@vnshetty:我同意Stephen的观点。我怀疑你没能在某处关闭一条小溪。但是,如果没有看到您的代码,我们无法判断@Stephen@jon编辑了我的任务。@vnshetty:我很高兴,但是为了完整起见,您的每个
close
方法都应该在自己的finally块中(或者使用类似于Guava的
closequity
方法)。否则,如果一个close方法抛出异常,其他流将不会关闭。
ZipFile zFile = new ZipFile("blah");
//lots-o-code
zFile.close();
File file = new File("blah");
file.delete();