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

下面的两个例子分别演示通过 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值