Hutool文件压缩、解压测试

hutool网址:https://www.hutool.cn/

ZipWriter、ZipReader 链接:https://apidoc.gitee.com/dromara/hutool/

pom文件引入


            cn.hutool
            hutool-all
            5.8.22
        

一、压缩文件夹、文件

@Test
    public void fileCompress(){
        // 压缩后的文件路径
        String output = "G:/hutool_file/测试2/1.zip";
        ZipWriter zipWriter = new ZipWriter(new File(output), Charset.defaultCharset());
        //ZipWriter of = ZipWriter.of(new File(output), Charset.defaultCharset()); 第二种写法
       
       // 要压缩的文件夹
        String input = "G:/hutool_file/测试1";
        zipWriter.add(false,null,new File(input));

        // 注意 一定要关闭流
        zipWriter.close();
    }

这里需要注意:千万记得关闭流,否则压缩后的文件,解压会提示如下错误

不关闭流解压错误提示

二、向压缩文件中追加文件

@Test
    public void fileAdd2Compress() throws Exception{
        // 压缩后的文件路径
        String output = "G:/hutool_file/测试2/1.zip";
        ZipWriter zipWriter = new ZipWriter(new File(output), Charset.defaultCharset());

        String input = "G:/hutool_file/33.png";
        zipWriter.add("33.png",new FileInputStream(new File(input)));

        // 注意 一定要关闭流
        zipWriter.close();
    }

采用此种方式,发现不能实现,会覆盖之前的文件内容,如图:

在gitee上,提问,有人告诉如下办法可以实现:

gitee上的解决办法

@Test
    public void fileAdd2Compress2(){
      // 包路径为:cn.hutool.core.util.ZipUtil
        File zipFile = FileUtil.file("G:/hutool_file/测试2/1.zip");
        File newFile = FileUtil.file("G:/hutool_file/33.png");
        ZipUtil.append(zipFile.toPath(), newFile.toPath());
    }

测试成功,如图:

成功追加文件

如果您有任何其他的解决方案或建议,请在下面留言分享。您的建议将帮助扩宽我的代码视野,让我能够更好地为用户提供服务。

三、解压文件

@Test
    public void fileDecompression(){
        String input = "G:/hutool_file/测试2/1.zip";
        ZipReader zipReader = ZipReader.of(new File(input), Charset.defaultCharset());
        String output = "G:/hutool_file/测试2/1";
        zipReader.readTo(new File(output));

        zipReader.close();
    }

四、过滤要解压的文件

过滤掉,压缩文件中的txt文件

过滤文件

@Test
    public void fileDecompressionFilter(){
        String input = "G:/hutool_file/测试2/1.zip";
        ZipReader zipReader = ZipReader.of(new File(input), Charset.defaultCharset());
        String output = "G:/hutool_file/测试2/1";
        File file = new File(output);

        zipReader.readTo(file, zipEntry -> {
            if(zipEntry.getName().indexOf("txt") != -1){
                return false;
            }else{
                return true;
            }
        });

        zipReader.close();
    }

解压后的文件夹:

解压后的文件夹

鉴于 Hutool 库提供了如此繁多的方法,我在此仅列举了实际开发过程中可能用到的部分。如果您对其他方法也感兴趣,欢迎访问官网查阅 API 文档,或在下方留言告知您的需求。我将竭力为您提供更多的帮助和支持。

展开阅读全文

页面更新:2024-03-06

标签:测试   写法   繁多   文件夹   路径   视野   解决方案   留言   文件   方法

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top