首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FileNotFoundException在尝试用java.util.zip.ZipFile解压缩存档时

FileNotFoundException在尝试用java.util.zip.ZipFile解压缩存档时
EN

Stack Overflow用户
提问于 2011-11-04 05:30:12
回答 1查看 2.4K关注 0票数 0

我有个愚蠢的问题,我一直没能弄清楚。有谁可以帮我?我的守则是:

代码语言:javascript
复制
String zipname = "C:/1100.zip";
    String output = "C:/1100";
    BufferedInputStream bis = null;
    BufferedOutputStream bos = null;
    try {
        ZipFile zipFile = new ZipFile(zipname);
        Enumeration<?> enumeration = zipFile.entries();
        while (enumeration.hasMoreElements()) {
            ZipEntry zipEntry = (ZipEntry) enumeration.nextElement();
            System.out.println("Unzipping: " + zipEntry.getName());
            bis = new BufferedInputStream(zipFile.getInputStream(zipEntry));
            int size;
            byte[] buffer = new byte[2048];

它不创建文件夹,但调试显示生成的所有内容。为了创建一个文件夹,我使用了以下代码

if(!output.exists()){ output.mkdir();} // here i get an error saying filenotfoundexception

代码语言:javascript
复制
            bos = new BufferedOutputStream(new FileOutputStream(new File(outPut)));
            while ((size = bis.read(buffer)) != -1) {
                bos.write(buffer, 0, size);
            }
        }
    } catch (Exception ex) {
        ex.printStackTrace();
    } finally {
        bos.flush();
        bos.close();
        bis.close();
    }

我的压缩文件包含图像: a.jpg b.jpg..。在相同的层次结构中,我有abc.xml。我需要提取压缩文件中的内容。这里有什么帮助吗。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-04 06:04:00

您的代码有几个问题: outPut在哪里声明?output不是文件而是字符串,因此exists()mkdir()不存在。首先声明output如下:

代码语言:javascript
复制
File output = new File("C:/1100");

此外,没有声明outPut (具有大P)。有点像output + File.seprator + zipEntry.getName()

代码语言:javascript
复制
 bos = new BufferedOutputStream(new FileOutputStream(output + File.seprator + zipEntry.getName()));

注意,您不需要像构造函数在FileOutputStream中显示的那样,将文件传递给文献资料

此时,如果Zip文件不包含目录,则代码应该可以工作。但是,当打开输出流时,如果zipEntry.getName()有一个目录组件(例如somedir/filename.txt),打开该流将导致一个FileNotFoundException,因为您试图创建的文件的父目录不存在。如果您希望能够处理这样的zip文件,您将在:如何在Java中递归解压缩文件?中找到您的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8005247

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档