尝试使用java.util.zip.ZipFile解压存档时FileNotFoundException

尝试使用java.util.zip.ZipFile解压存档时FileNotFoundException,java,unzip,filenotfoundexception,Java,Unzip,Filenotfoundexception,我有一个愚蠢的问题,我还没弄明白。有人能帮我吗? 我的代码如下: String zipname = "C:/1100.zip"; String output = "C:/1100"; BufferedInputStream bis = null; BufferedOutputStream bos = null; try { ZipFile zipFile = new ZipFile(zipname); Enumeration<

我有一个愚蠢的问题,我还没弄明白。有人能帮我吗? 我的代码如下:

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];
我的zip文件包含图像:a.jpg b.jpg。。。在相同的层次结构中,我有abc.xml。 我需要提取的内容是在zip文件。
这里有任何帮助。

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

File output = new File("C:/1100");
此外,
输出
(带大p)未声明。它类似于
output+File.seperator+zipEntry.getName()

请注意,您不需要将文件传递给FileOutputStream,如中的构造函数所示


此时,如果Zip文件不包含目录,则代码应该可以工作。但是,当打开输出流时,如果zipEntry.getName()具有目录组件(例如
somedir/filename.txt
),打开该流将导致
FileNotFoundException
,因为您尝试创建的文件的父目录不存在。如果您希望能够处理此类zip文件,您可以在以下内容中找到答案:

最后,我为我的博客写了这篇文章:
File output = new File("C:/1100");
 bos = new BufferedOutputStream(new FileOutputStream(output + File.seprator + zipEntry.getName()));