Erlo

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

2023-12-01 20:18:36 发布   65 浏览  
页面报错/反馈
收藏 点赞

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包,可直接引用依赖
*版本

2.3
3.1
  • 引用依赖
 
 
      org.apache.velocity
      velocity-engine-core
      ${velocity.version}
  
  
      org.apache.velocity.tools
      velocity-tools-generic
      ${velocity.tool.version}
  

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 的作用和基本用法。如果有其他问题,欢迎随时向我提问。

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

浏览 2967.05 万次 点击这里给我发消息

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认