写点什么

Java 实现创建 Zip 压缩包并写入文件

  • 2022 年 1 月 14 日
  • 本文字数:1673 字

    阅读完需:约 5 分钟

前言工作中需要把一些数据放到一个 zip 的压缩包中,可以使用 ZipOutputStream。ZipOutputStream 可以将内容直接写入到 zip 包中。一般创建 ZipOutputStream 通常是先封装一个 FileOutputStream,然后在每写入一个文件之前,需要先调用一次 putNextEntry,然后使用 write 写入 byte[]类型的数据,当写入完毕的时候使用 colseEntry 来结束这个文件的打包。当然也可以通过 ZipOutputStream 直接把数据写入压缩包内,在压缩包内构建数据。


使用 public static void filetest() throws IOException {String txtPath = "D:\fileTest\image\2.txt";String zipPath = "D:\fileTest\image\2.zip"; //压缩包路径 String str = "测试 test123abc"; //需要写入的数据


    //创建压缩包    ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPath));
//封装一个文件 FileWriter fileWriter = null; try { fileWriter = new FileWriter(txtPath); fileWriter.write(str); fileWriter.flush(); fileWriter.close(); } catch (IOException e) { log.error("fileWriter", e); }
//对上面封装好的文件构建一个FileInputStream FileInputStream fis = new FileInputStream(txtPath); //压缩包里创建一个空文件 zipOutputStream.putNextEntry(new ZipEntry("Request.json")); //写入压缩文件 int len; byte[] buffer = new byte[1024]; //字节数组大小可调节 //读取fis字节流,转移到buffer字节数组中去,读取后fis为空 while ((len = fis.read(buffer)) > 0) { zipOutputStream.write(buffer, 0, len); } byte[] b = new byte[1024]; int a = fis.read(b); //关闭压缩包打包 zipOutputStream.closeEntry(); fis.close(); zipOutputStream.flush(); zipOutputStream.close();}
复制代码


复制代码运行之后,将会创建如下文件:


压缩包内会产生一个叫 Request.json 文件,如图:


内容与 2.txt 里的内容一致,为“测试 test123abc”。


上述方法是:先创建 2.txt,再读取 2.txt 的内容,导入到压缩包内形成文件。相同的逻辑,我们可以读取任意其他文件,然后把他们放入到压缩包内。


直接将内容导入到压缩包内当然我们也可以直接将数据导入到压缩包内。实现如下:


public static void filetest() throws IOException {String zipPath = "D:\fileTest\image\3.zip"; //压缩包路径 String str1 = "测试 test123abc"; //需要写入的数据 String str2 = "测试 2";String Name1 = StringUtils.join("文件.json"); //压缩包里的文件 String Name2 = StringUtils.join("file/文件 1.json"); //在压缩包里创建 file 目录下的文件//创建压缩包 ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipPath));//创建压缩包里的文件 zipOutputStream.putNextEntry(new ZipEntry(Name1));byte[] bytes1 = str1.getBytes(StandardCharsets.UTF_8);zipOutputStream.write(bytes1, 0, bytes1.length); //将数据写入到压缩包里的文件里面 zipOutputStream.closeEntry();


  zipOutputStream.putNextEntry(new ZipEntry(Name2));  byte[] bytes2 = str2.getBytes(StandardCharsets.UTF_8);  zipOutputStream.write(bytes2, 0, bytes2.length);
zipOutputStream.closeEntry();
zipOutputStream.flush(); zipOutputStream.close();
复制代码


}复制代码上述是直接将 String 类型数据转换成 byte 数组,导入到压缩包内,形成两个文件:


file 文件夹里面是文件 1.json,里面的内容是“测试 2”,文件.json 的内容则是“测试 test123abc”。


最后如果你觉得此文对你有一丁点帮助,点个赞。或者可以加入我的开发交流群:1025263163 相互学习,我们会有专业的技术答疑解惑


如果你觉得这篇文章对你有点用的话,麻烦请给我们的开源项目点点 star: https://gitee.com/ZhongBangKeJi不胜感激 !


PHP 学习手册:https://doc.crmeb.com技术交流论坛:https://q.crmeb.com

用户头像

还未添加个人签名 2021.11.02 加入

CRMEB就是客户关系管理+营销电商系统实现公众号端、微信小程序端、H5端、APP、PC端用户账号同步,能够快速积累客户、会员数据分析、智能转化客户、有效提高销售、会员维护、网络营销的一款企业应用

评论

发布
暂无评论
Java实现创建Zip压缩包并写入文件