温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2022-01-17 17:57:46 来源:亿速云 阅读:263 作者:kk 栏目:开发技术

Java怎么实现创建Zip压缩包并写入文件,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

Java是什么

Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。

前言

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

运行之后,将会创建如下文件:

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

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

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

内容与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”。

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

关于Java怎么实现创建Zip压缩包并写入文件问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI