java~将多个输出流压缩成一个zip文件

这篇具有很好参考价值的文章主要介绍了java~将多个输出流压缩成一个zip文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hutool工具包可以帮我们完成这件事,几行代码可以实现,我们提供两种方式,压缩本地文件和压缩内存流。

压缩本地文件

@Test
public void zip(){
    String entryName = "d:\\codegen\\1";
    String zipFilePath = "d:\\codegen\\example.zip";

    // 将entryName这个文件或者目录,压缩成zipFilePath这个zip文件
    ZipUtil.zip(entryName,zipFilePath, true);
}

压缩内存流

@Test
public void zipStream() throws IOException {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ZipOutputStream zip = new ZipOutputStream(outputStream);

    zip.putNextEntry(new ZipEntry(Objects.requireNonNull("1.txt")));
    IoUtil.write(zip, StandardCharsets.UTF_8, false, "hello world.");
    zip.closeEntry();

    IoUtil.close(zip);//这个需要在IoUtil.write的上面,即先关闭zip流,再写文件,否则会报错
    IoUtil.write(FileUtil.getOutputStream("d:\\codegen\\hello.zip"), Boolean.TRUE, outputStream.toByteArray());
}

扩展阅读:如果希望进行模版技术,可以看一下org.apache.velocity.tools:velocity-tools-generic包,可直接引用依赖
*版本

<velocity.version>2.3</velocity.version>
<velocity.tool.version>3.1</velocity.tool.version>
  • 引用依赖
 <!--代码生成模板引擎-->
 <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity-engine-core</artifactId>
      <version>${velocity.version}</version>
  </dependency>
  <dependency>
      <groupId>org.apache.velocity.tools</groupId>
      <artifactId>velocity-tools-generic</artifactId>
      <version>${velocity.tool.version}</version>
  </dependency>

org.apache.velocity使用说明

org.apache.velocity 是 Apache Velocity 模板引擎的 Java 实现。Velocity 是一个用于简化创建模板驱动文本生成的工具,它可以帮助你将数据和模板进行结合,生成最终的文本输出。以下是关于 org.apache.velocity 的一些作用和用法:

作用

  1. 模板引擎:Velocity 提供了模板引擎,用于处理模板文件和数据的合并,生成最终的文本输出。
  2. 分离数据和视图:通过使用 Velocity 模板,可以将数据和视图逻辑分离,使得代码更易于维护和管理。
  3. 灵活性:Velocity 模板提供了丰富的语法和功能,可以满足各种复杂的文本生成需求。

用法

  1. 创建模板:首先创建 Velocity 模板文件,其中包含文本内容以及模板变量或控制结构。
  2. 准备数据:准备需要填充到模板中的数据,通常是一个 Java 对象或者一个 Map。
  3. 初始化 Velocity 引擎:在 Java 代码中初始化 Velocity 引擎,配置模板路径等相关信息。
  4. 合并模板:将数据和模板进行合并,生成最终的文本输出。

下面是一个简单的示例,演示了如何在 Java 中使用 Apache Velocity:

import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import java.io.StringWriter;

public class VelocityExample {
    public static void main(String[] args) {
        // 初始化 Velocity 引擎
        VelocityEngine velocityEngine = new VelocityEngine();
        velocityEngine.init();

        // 准备数据
        VelocityContext context = new VelocityContext();
        context.put("name", "World");

        // 获取模板
        Template template = velocityEngine.getTemplate("hello.vm");

        // 合并模板
        StringWriter writer = new StringWriter();
        template.merge(context, writer);

        // 输出结果
        System.out.println(writer.toString());
    }
}

在这个示例中,我们使用了 VelocityEngine 来初始化 Velocity 引擎,然后创建了一个 VelocityContext 对象来存储模板所需的数据。接着,我们获取了一个名为 "hello.vm" 的模板,并将数据和模板进行合并,最终将结果输出到控制台。

希望这能帮助你理解 org.apache.velocity 的作用和基本用法。如果有其他问题,欢迎随时向我提问。文章来源地址https://www.toymoban.com/news/detail-747850.html

到了这里,关于java~将多个输出流压缩成一个zip文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • java工具类 - 实现文件压缩zip及解压缩

    对hutool工具类进行的封装 解压缩 zipUtil是hutool包下的工具类 使用:

    2024年02月16日
    浏览(31)
  • java将指定文件夹按照文件目录压缩为zip压缩包

    将指定的压缩包作为流发送给浏览器 下面粘贴一些没有用的东西 ,是我自已业务的逻辑,,主要逻辑是根据传入文件不同 判断将压缩包发送给浏览器 还是将xls模板发送给浏览器

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

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

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

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

    2024年02月05日
    浏览(32)
  • java(ZipOutputStream)将多个文件打成zip

    当想要将两个文件打包成ZIP文件时,可以使用Java的ZipOutputStream类。 ZipOutputStream 是Java中用于创建ZIP文件的类,它是 java.util.zip 包中的一部分。通过使用 ZipOutputStream ,可以将多个文件压缩到一个ZIP文件中。 以下是 ZipOutputStream 的一些主要特性和方法: 创建ZIP文件 : ZipOutput

    2024年02月09日
    浏览(37)
  • Java的zip文件压缩与解压:ZipInputStream,ZipOutputStream

       用ZipOutputStream来压缩一个文件夹时,要搭配ZipEntry来使用。ZipEntry是用来创建压缩文件的。    举个例子,向压缩文件中添加一个文件的代码: 如下图:    在创建ZipEntry对象时可以指定文件在压缩包的位置:new ZipEntry(“second-dirsecond-01.txt”)    在使用ZipOutputStrea

    2024年02月16日
    浏览(46)
  • ZIP压缩输入/输出流

    ZIP压缩管理文件(ZIP archive)是一种十分典型的文件压缩形式。关于ZIP压缩的I/O实现,在Java的内置类中提供了非常好用的相关类,所以其实现方式非常简单。 本文将介绍 java.util.zip包中的ZipOutputStream与ZipInputStream类来实现文件的压缩/解压缩。 利用ZipOutputStream类对象,可将文件

    2024年02月16日
    浏览(32)
  • Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载

    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦。这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了。 下面是一个名为CompressUtil的工具类的代码,它提供了一些方法来处理文件压

    2024年02月06日
    浏览(56)
  • java 解读zip文件,获取压缩包内各文件的流的集合

    解读zip文件,把zip文件内的众文件转化成流集合,方便其他后续操作

    2024年02月10日
    浏览(50)
  • php压缩一个文件夹,php下载多个图片

    把 100/ 这个文件夹,压缩成 一百.zip 然后得到zip所在的下载url 这个功能,需要PHP去掉禁用函数 shell_exec  

    2024年02月11日
    浏览(55)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包