使用Java打包Zip文件

这篇具有很好参考价值的文章主要介绍了使用Java打包Zip文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在项目中可能会遇到,下载文件的情况,下载文件还是比较好处理的

比较简单的方式就是我们直接写入OutPutstream,网上会有很所类似的教程。

也可以使用一些现成的工具类。

那么当我们遇到了需要下载文件夹的时候,我们不得不遍历所有的文件,去逐个的下载文件,这个时候我们最好是返回给前端一个zip或者tar包的形式,供用户下载使用,这里我来分享一下有关Java如何将文件夹打包并且上传。

这里我们使用的核心类就是

ZipOutputStream

代码如下文章来源地址https://www.toymoban.com/news/detail-624107.html

// 一般情况,我们先新建一个ZipOutputStream对象, 其中的outputStream就是我们的输出流
ZipOutputStream zip = new ZipOutputStream(outputStream);

// 假如这就是我们要下载的文件夹。
String dir = "/root/data"

// 文件的名称可以根据需要来定制化
String fileName = "data.zip";

response.setCharacterEncoding("UTF-8");
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Expose-Headers", "*");
            // 下载文件名乱码问题
            response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
            //response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + downloadName);
            response.setContentType("application/octet-stream;charset=UTF-8");

// 这就是最高级目录了,这也是最核心的方法,建立zip包下的层级关系,然后遇到文件写进去就行了,其他没啥特殊的
zip.putNextEntry(new ZipEntry(dir));

// 接下来,就是写一个递归方法了,类似下面的这个方法 , 伪代码如下

private void handlerFile(Item item, String base) {
    zip.putNextEntry(new ZipEntry(dir + "" + base));
    if(item.isdir()) {
        // 如果是文件夹,文件夹没有内容的,只需要继续递归,要注意的是,zip文件夹的路径拼接
           handlerFile(item, base + item.name);
    } else {
            // 写文件,这里就要正式写文件了
            inputStream = item.getinputStream;
            BufferedInputStream bis = new BufferedInputStream(inputStream);
            byte[] buffer = new byte[1024];
            int num;
            while ((num = inputStream.read(buffer)) != -1) {
                zip.write(buffer, 0, num);
            }
            zip.flush();
            IOUtils.closeQuietly(bis);

    }
    
}

到了这里,关于使用Java打包Zip文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载

    业务需求:从数据库查询多个list集合信息封装excel,每个excel都有2个sheet页,填充不同的信息,最后将所有excel打包成zip文件,以流的形式返回给客户端,供客户端另存为窗口下载。 只发出一次请求 每个excel表中到数据记录不能超过2条 excel文件或者zip包不会上传服务器,而是

    2024年02月06日
    浏览(54)
  • java解压zip文件

    zip文件目录结构如下: 其中,word下面还有多个子目录,可以递归进行解压目录,核心代码如下:

    2024年02月11日
    浏览(55)
  • 使用hutool工具,对多文件下载进行打包下载,这里使用的是zip压缩算法。

    参考以下博主: Java实现文件下载zip包单文件等_java下载zip文件_liu.kai的博客-CSDN博客 先将需要压缩的文件们打包在一块生成一个临时压缩包 将这个临时的压缩包,以单文件下载的方式,给前端响应过去 删除临时的压缩包

    2024年02月04日
    浏览(96)
  • java 文件压缩zip【两种方式】

     一、普通方式 二、使用zip4j方式 引入jar:  代码块:

    2024年02月11日
    浏览(42)
  • Java压缩文件为ZIP并加密

    当您需要将文件加密并保存为ZIP文件时,可以使用 net.lingala.zip4j 库来实现。 步骤1:准备工作 首先,确保您已经包含了 net.lingala.zip4j 库,并将其添加到您的Java项目中。您可以通过Maven或Gradle等构建工具来添加这个库。仓库地址 步骤2:单文件压缩 接下来,编写Java代码来执行

    2024年02月05日
    浏览(36)
  • Java压缩与解压缩ZIP文件

    在现代计算机上,数据传输和存储越来越依赖于文件压缩技术。当我们需要发送大量数据时,压缩文件可以大大减少传输时间和网络带宽,而且压缩文件还可以帮助我们节省磁盘空间。在Java中提供了压缩和解压缩文件的功能,可以使用java.util.zip包中的类来实现。本篇将对如

    2024年02月09日
    浏览(56)
  • Java 压缩多个文件为zip包(中间不生成临时文件,直接压缩为zip二进制流),以及解压zip包二进制流为文件

    这篇博客将提供俩种方法, 提前生成要压缩的多个文件,然后读取文件夹多层或一层去遍历压缩zip包 直接用原始文件名称及二进制流,压缩返回zip包二进制流,中间不生成冗余文件; 很明显方法2更优一些; 解压zip文件或者zip文件流验证; 压缩俩个文件到zip包,并分别解析

    2024年02月06日
    浏览(55)
  • Java实现文件下载zip包单文件等

    摘要 本次主要记录将多个文件打包到zip压缩包并完成下载;留个代码方便以后用到了ctrl c v 我使用的是 hutool工具包 的二次封装,下面直接列出工具类即可,具体API不再详述,需要详细了解的可以自行百度 注意: 1 工具类中文件参数都是以File对象接收的,如果你是远程URL下载文件的

    2024年02月11日
    浏览(42)
  • java读取zip/jar包中的文件

    1、jar vs zip: jar 文件和 zip 文件都是归档文件,并且都经过压缩。事实上,jar 文件使用与 zip 文件相同的存档和压缩技术,所以 jar 文件实际上是一种特定类型的 zip 文件。(JAR 文件本质上是一个包含可选 META-INF 目录的 zip 文件。)这一切都意味着: 您可以使用与打开 zip 文件相

    2024年02月16日
    浏览(47)
  • 【Java 基础篇】Java Zip压缩:简化文件和文件夹的压缩操作

    在Java开发中,经常会遇到需要对文件和文件夹进行压缩和解压缩的需求。Java提供了Zip压缩库,使我们能够轻松地进行文件和文件夹的压缩操作。本文将详细介绍Java中的Zip压缩功能,并提供示例代码来演示其用法。 Zip压缩是一种常见的文件压缩格式,它将多个文件和文件夹打

    2024年02月15日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包