使用Java实现多个文件压缩打包

###引言
  在做项目的时候经常会涉及到文件的压缩,比如近期用Java Web做一个后台管理,后台有个导出功能,需要统计生成几十个excel文件,然后进行下载,如果不将这些文件进行压缩传送,耗费用户流量不说,用户浏览器还会一个接一个地接收文件不停的点击确认保存。所以需要对文件进行压缩传送。
  关于文件压缩,Java的java.util.zip包提供了这个功能。这个包下总共有20多个相关的类,下面介绍一下常用的几个类,读者感兴趣也可查看该工具包。
  该工具包下和解压缩相关的基类有ZipInputStream、ZipOutputStream、GZIPInputStream、GZIPOutputStream。其中ZipInputStream、GZIPInputStream这两个输入流主要用于解压时读取压缩文件,ZipOutputStream、GZIPOutputStream两个输出流用于压缩,将数据流写入压缩文件。通过名字我们可以看到这两个类对应我们常见的以.zip和.gzip结尾的压缩文件类型。另外还有一个ZipFile,这个类会在解压时用到。个人理解是用于初始化解析File。
  关于压缩,首先贴上实现的压缩代码

/**
 * Created by someone on 2017/10/16.
 */
public class IOUtil {

    /**
     * 通过指定路径和文件名来获取文件对象,当文件不存在时自动创建
     * @param path
     * @param fileName
     * @return
     * @throws IOException
     */
    public static File getFile(String path, String fileName) throws IOException {
        // 创建文件对象
        File file;
        if (path != null && !path.equals(""))
            file = new File(path, fileName);
        else
            file = new File(fileName);
        if (!file.exists()) {
            file.createNewFile();
        }
        // 返回文件
        return file;
    }

    /**
     * 获得指定文件的输出流
     * @param file
     * @return
     * @throws FileNotFoundException
     */
    public static FileOutputStream getFileStream(File file) throws FileNotFoundException {
        return new FileOutputStream(file);
    }

    /**
     * 将多个文件压缩
     * @param fileList 待压缩的文件列表
     * @param zipFileName 压缩文件名
     * @return 返回压缩好的文件
     * @throws IOException
     */
    public static File getZipFile(List<File> fileList, String zipFileName) throws IOException {
        File zipFile = getFile(PathConfig.getPath(), zip
  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值