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

您所在的位置:网站首页 怎么创建压缩包 Java实现创建Zip压缩包并写入文件

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

2023-12-18 09:31| 来源: 网络整理| 查看: 265

前言

工作中需要把一些数据放到一个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(); }

运行之后,将会创建如下文件: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hT8kTj3R-1642138459115)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1642137599734.png)] 压缩包内会产生一个叫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数组,导入到压缩包内,形成两个文件: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EaDV1Us3-1642138459116)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\1642138303457.png)] file文件夹里面是文件1.json,里面的内容是“测试2”,文件.json的内容则是“测试test123abc”。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3