Java解压较大压缩包

分类专栏:
Springboot

文章标签:
Java自学
工具
Springboot
原创

Java解压较大压缩包

注意引入的类,这里用到了apache的ant依赖

        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.9.7</version>
        </dependency>

本次文章使用的是接近4个G大小的压缩包

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.Enumeration;

/**
 * @author PZ
 */
public class Test {

    /**
     * zip文件解压
     *
     * @param inputFile   待解压文件夹/文件
     * @param destDirPath 解压路径
     */
    public static void zipUncompress(String inputFile, String destDirPath) throws Exception {
        //获取当前压缩文件
        File srcFile = new File(inputFile);
        // 判断源文件是否存在
        if (!srcFile.exists()) {
            throw new Exception(srcFile.getPath() + "所指文件不存在");
        }
        //创建压缩文件对象
        ZipFile zipFile = new ZipFile(srcFile);
        //开始解压
        Enumeration<?> entries = zipFile.getEntries();
        while (entries.hasMoreElements()) {
            ZipEntry entry = (ZipEntry) entries.nextElement();
            // 如果是文件夹,就创建个文件夹
            if (entry.isDirectory()) {
                String dirPath = destDirPath + "/" + entry.getName();
                srcFile.mkdirs();
            } else {
                // 如果是文件,就先创建一个文件,然后用io流把内容copy过去
                File targetFile = new File(destDirPath + "/" + entry.getName());
                // 保证这个文件的父文件夹必须要存在
                if (!targetFile.getParentFile().exists()) {
                    targetFile.getParentFile().mkdirs();
                }
                targetFile.createNewFile();
                // 将压缩文件内容写入到这个文件中
                InputStream is = zipFile.getInputStream(entry);
                FileOutputStream fos = new FileOutputStream(targetFile);
                int len;
                byte[] buf = new byte[1024];
                while ((len = is.read(buf)) != -1) {
                    fos.write(buf, 0, len);
                }
                // 关流顺序,先打开的后关闭
                fos.close();
                is.close();
            }
        }
    }

    public static void main(String[] args) {
        try {
            long start = System.currentTimeMillis();
            zipUncompress("D:\\pz.zip", "D:\\");
            long end = System.currentTimeMillis();
            System.out.println((end - start) / 1000);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}


程序解压所需时间 : 80s左右 在这里插入图片描述

文章已同步到CSDN(请点击

  • 作者:潘震
  • 评论

    sgkqghmkh
    Heu5Y0 <a href="http://zbpfkyjemela.com/">zbpfkyjemela</a>, [url=http://ayjpujhekxeq.com/]ayjpujhekxeq[/url], [link=http://ilvfbshipgim.com/]ilvfbshipgim[/link], http://hwffxnltqfuo.com/
    hdxoahrxfo
    33b71w <a href="http://vxgjzxmyuuqd.com/">vxgjzxmyuuqd</a>, [url=http://gakdqfpqwawy.com/]gakdqfpqwawy[/url], [link=http://faxssqndbeoo.com/]faxssqndbeoo[/link], http://tvekcsyxhvvb.com/
    hzvrjgcknvv
    60xsZ0 <a href="http://edjiiltldblg.com/">edjiiltldblg</a>, [url=http://mbstkxhqjgha.com/]mbstkxhqjgha[/url], [link=http://jwqisypwznbw.com/]jwqisypwznbw[/link], http://qjoexyzgxebp.com/
    abbdrb
    A0aLOq <a href="http://kifuunvuqucj.com/">kifuunvuqucj</a>, [url=http://wkozrwnwaamj.com/]wkozrwnwaamj[/url], [link=http://rywhnvvpzbwz.com/]rywhnvvpzbwz[/link], http://ytusciscxkts.com/
    留言