java 压缩文件工具类

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtil {
    //压缩目标目录(要带后缀  如‘.zip’)
    private String zipFileName;
    //压缩源目录 (要压缩的文件夹或文件)
    private String sourceFileName;
    private FileFilter filter;

    //有参构造,需要带着两个必要参数,执行压缩方法即可
    public ZipUtil(String zipFileName, String sourceFileName) {
        this.zipFileName = zipFileName;
        this.sourceFileName = sourceFileName;
    }

    public void setFileFilter(FileFilter filter) {
        this.filter = filter;
    }

    public void zip() throws Exception {
        ZipOutputStream out = null;
        FileOutputStream fis = null;

        try {
            fis = new FileOutputStream(this.zipFileName);
            out = new ZipOutputStream(fis);
            BufferedOutputStream bos = new BufferedOutputStream(out);
            File sourceFile = new File(this.sourceFileName);
            this.compress(out, bos, sourceFile, sourceFile.getName());
            bos.close();
        } catch (Exception var12) {
            throw var12;
        } finally {
            try {
                out.close();
                fis.close();
            } catch (Exception var11) {
            }

        }

    }

    public void compress(ZipOutputStream out, BufferedOutputStream bos, File sourceFile, String base) throws Exception {
        if (this.filter == null || this.filter.accept(sourceFile)) {
            if (sourceFile.isDirectory()) {
                File[] flist = sourceFile.listFiles();
                if (flist.length == 0) {
                    out.putNextEntry(new ZipEntry(base + "/"));
                } else {
                    for(int i = 0; i < flist.length; ++i) {
                        this.compress(out, bos, flist[i], base + "/" + flist[i].getName());
                    }
                }
            } else {
                out.putNextEntry(new ZipEntry(base));
                FileInputStream fis = null;
                BufferedInputStream bis = null;

                try {
                    fis = new FileInputStream(sourceFile);
                    bis = new BufferedInputStream(fis);

                    int tag;
                    while((tag = bis.read()) != -1) {
                        out.write(tag);
                    }
                } catch (Exception var15) {
                    throw var15;
                } finally {
                    try {
                        bis.close();
                        fis.close();
                    } catch (Exception var14) {
                    }

                }
            }

        }
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容