[Java语言] java 中使用ZipInputStream或ZipFile解压ZIP文件!!

来源:互联网 发布:怎么查131458淘宝信誉 编辑:程序博客网 时间:2024/06/05 03:24
下面的两个例子分别演示通过 java.util.zip 包中的  ZipInputStream和  ZipFile 来解压ZIP文件,使用的都是http://javadt.com/forum.php?mod=viewthread&tid=217&extra=生成的javadt.zip文件,解压后文件不会解压成目录,而是ZIP中所有文件都在工程当前目录中。

使用 java.util.zip.ZipInputStream解压ZIP文件。 
package javadt.code.javase;


import java.io.*;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipEntry;

public class JavadtUnzipDemo {
    public static void main(String[] args) {
        String zipname = "javadt.zip";

        try {
            FileInputStream fis = new FileInputStream(zipname);
            ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
            ZipEntry entry;

            //getNextEntry()!=null时,ZipInputStream读取每个压缩文件,
            while ((entry = zis.getNextEntry()) != null) {
                System.out.println("Unzipping: " + entry.getName());

                int size;
                byte[] buffer = new byte[2048];

                FileOutputStream fos = new FileOutputStream(entry.getName());
                BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length);

                while ((size = zis.read(buffer, 0, buffer.length)) != -1) {
                    bos.write(buffer, 0, size);
                }
                bos.flush();
                bos.close();
            }

            zis.close();
            fis.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 java.util.zip.ZipFile解压ZIP文件。
package Javadt.code.javase;

import java.util.zip.ZipFile;
import java.util.zip.ZipEntry;
import java.util.Enumeration;
import java.io.*;

public class JavadtUnzipDemo2 {
    public static void main(String[] args) {
        String zipname = "javadt.zip";

        try {
            ZipFile zipFile = new ZipFile(zipname);
            Enumeration enumeration = zipFile.entries();

            while (enumeration.hasMoreElements()) {
                ZipEntry zipEntry = (ZipEntry) enumeration.nextElement();
                System.out.println("解压中...: " + zipEntry.getName());

                BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(zipEntry));

                int size;
                byte[] buffer = new byte[2048];

                FileOutputStream fos = new FileOutputStream(zipEntry.getName());
                BufferedOutputStream bos = new BufferedOutputStream(fos, buffer.length);

                while ((size = bis.read(buffer, 0, buffer.length)) != -1) {
                    bos.write(buffer, 0, size);
                }

                bos.flush();
                bos.close();
                fos.close();

                bis.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


上面两个例子的运行结果都是:
解压中...: javadt.txt
如果ZIP里有多个文件,都会列出。在工程文件夹下会出现 javadt.txt 文件。

转载请注明:转自http://javadt.com