首页 > 编程语言 >java~将多个输出流压缩成一个zip文件

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

时间:2023-12-01 17:47:14浏览次数:49  
标签:java zip org 压缩成 Velocity apache velocity 模板

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

标签:java,zip,org,压缩成,Velocity,apache,velocity,模板
From: https://www.cnblogs.com/lori/p/17870586.html

相关文章

  • Java环境变量配置及报错java --version Error: could not open `D:\APP\Develop\JA
    C:\Users\Administrator>java--versionError:couldnotopen`D:\APP\Develop\JAVA\jre\lib\amd64\jvm.cfg'Java环境变量的配置控制面板→系统→高级系统设置→环境变量在下方系统变量中新建在下方系统变量中找到Path,双击打开,新建两个%JAVA_HOME%\bin%JAVA_HOME%\jre\b......
  • java heap space解决方法
    在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的Heapsize不足2%的时候将抛出异常信息,java.lang.OutOfMemoryError:Javaheapspace。所以产生这个异样的原因通常有两种:1.程序中出现了死循环2.程序占用内存太多,超过了JVM堆设置的最大值。对于第一种情况,需要自......
  • Java对接阿里云短信模块
    1.去阿里云申请短信签名,申请签名需要网站域名,注意申请,下来的就是签名主体2.申请签名模板拿到签名模板CODE3.RAM开通账号,并且权限要去找到那个短信服务的权限,配置给用户,可以拿到key和sercet4.开始java代码publicstaticfinalStringproduct="Dysmsapi";//产品域名,开发......
  • Java继承与多态:实现代码复用与扩展的利器
    一、概述在Java编程语言中,继承和多态是两个非常重要的概念,它们是实现代码复用、扩展性和灵活性的关键。本文将详细介绍Java继承和多态的概念、实现方法以及注意事项,帮助您更好地理解和应用这两种技术。二、Java继承继承的概念Java继承是面向对象编程中的一个基本概念,它允许我们基于......
  • java使用http工具类调用第三方接口
    java使用http工具类调用第三方接口一、所需maven依赖:<!--json依赖--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version>......
  • 复习:Java基础-泛型方法
    泛型大家都很熟悉了泛型方法呢可能很多小伙伴都有混淆,今天来稍微复习一下泛型方法(普通方法)publicclassTest<T>{publicTf(Tc){//注意声明,使此方法成为泛型方法returnc;}}泛型方法(静态方法)这么写编译就通过不了错误写法publicclassTe......
  • android开发aar包或者jar包出现类重复问题Caused by: java.lang.RuntimeException: Du
    如果是仓库依赖的方式直接使用exclude语句移除相同的依赖库即可,如下:implementation("org.java-websocket:Java-WebSocket:1.5.2"){excludegroup:'org.slf4j',module:'slf4j-api'//exclude掉websocket库依赖的slf4j库}但是如果是aar包或者jar包里面的类重复呢?这个......
  • Java--java.lang.String有个 indexOf()方法,但是要注意它是区分大小写的
    首先这个indexOf(Stringstr)方法的作用:如果要检索的字符串值没有出现,则该方法返回-1。1.如果要处理的字符串对大小写不敏感,可以将该字符串统一转成大写或者小写,然后再indexOf。例如处理:User-Agent:Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,like......
  • JavaScript面试题
    列举常用的字符串方法indexOf(要查找的字符,开始索引)查找某个字符串第一次出现的位置lastIndexOf(要查找的字符,开始索引)查找某个子字符串最后一次出现的位置replace(被替换的内容,要替换的内容)替换好的字符串substr(从哪个索引开始,截取多少个)返回截取到的内容subst......
  • 学习笔记3:JavaSE & API(异常处理)
    1、Java中的错误(1)所有错误的超类:Throwable(2)Throwable的子类:子类:Error,系统级别错误、运行环境错误。比如,虚拟机内存溢出。子类:Exception,异常情况,通常是逻辑问题导致的程序级别错误,可在运行期间被解决。比如,空指针,下标越界。(3)通常,程序中处理的异常都是Exception。(4)错误输出:S......