Java基础-IO流-zip操作

本文详细介绍了如何使用Hutool Java库中的ZipUtil工具类进行文件和目录的打包及解压操作,包括打包到指定目录、自定义压缩包名称、是否包含目录、打包多个文件以及压缩包的解压方法。通过实例代码展示了各种功能的使用方法。
摘要由CSDN通过智能技术生成

Java工程师知识树 / Java基础



主要针对cn.hutool.core.util.ZipUtil常方法的介绍:

1 打包到当前目录
package com.gongsl.test;

import cn.hutool.core.util.ZipUtil;
import java.io.File;

/**
 * @Author: gongsl
 * @Date: 2021-01-02 17:55
 */
public class HutoolTest {
    public static void main(String[] args) {
        //将"E:\new\demo"目录下的所有内容打包到"E:\new\demo.zip"文件中
        File file = ZipUtil.zip("E:\\new\\demo");
        System.out.println(file.getName());//运行结果:demo.zip
    }
}
//运行main方法后,就会在"E:\new"目录下多一个demo.zip压缩包
1234567891011121314151617

注意:这种方式虽然既能打包文件也能打包文件夹,但只能打包到当前目录,且打包后的压缩包的名字就是目录名,像这类的目录是"E:\new\demo",那么生成的压缩包的名字就只能是demo.zip。

2 指定打包后的文件名及保存的目录
package com.gongsl.test;

import cn.hutool.core.util.ZipUtil;
import java.io.File;

/**
 * @Author: gongsl
 * @Date: 2021-01-02 17:55
 */
public class HutoolTest {
    public static void main(String[] args) {
        //将"E:\new\demo"目录下的所有内容打包到"E:\new\test\abc.zip"文件中
        File file = ZipUtil.zip("E:\\new\\demo","E:\\new\\test\\abc.zip");
        System.out.println(file.getName());//运行结果:abc.zip
    }
}
//运行main方法后,就会在"E:\new\test"目录下多一个abc.zip压缩包
1234567891011121314151617
注意事项:
  1. 这里zip方法的第二个参数必须为文件,不能为目录;
  2. 这里zip方法的第二个参数的压缩包的名字可以和"demo"目录名相同,也可以不同;
  3. 这里zip方法的第二个参数的“test”目录可以存在也可以不存在,存在的话压缩包就直接放到该目录中,不存在的话就先创建该目录,然后再把压缩包放入其中。
3 可选是否包含被打包的目录
package com.gongsl.test;

import cn.hutool.core.util.ZipUtil;
import java.io.File;

/**
 * @Author: gongsl
 * @Date: 2021-01-02 17:55
 */
public class HutoolTest {
    public static void main(String[] args) {
        //将"E:\new\demo"目录下的所有文件打包到"E:\new\test\abc.zip"文件中
        File file = ZipUtil.zip("E:\\new\\demo","E:\\new\\test\\abc.zip",true);
        System.out.println(file.getName());//运行结果:abc.zip
    }
}
//运行main方法后,就会在"E:\new\test"目录下多一个abc.zip压缩包
1234567891011121314151617

这里调用的是带有三个参数的zip方法,第三个参数为true的话,表示在打包的时候,会连目录一并打包进压缩包中。我们这里要打包的是"E:\new\demo"目录下的所有文件,使用第三个参数为true的zip方法的话,当我们打开abc.zip压缩包的时候,压缩包里是包含demo目录的,进入这个目录里面后才能看到该目录下的所有文件。如果这里使用的是两个参数的zip方法,那么当我们打开abc.zip压缩包的时候,压缩包里是不包含demo目录的,我们直接看到的就是demo目录中的所有文件。

4 选择多个文件或目录进行打包
package com.gongsl.test;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.ZipUtil;
import java.io.File;

/**
 * @Author: gongsl
 * @Date: 2021-01-02 17:55
 */
public class HutoolTest {
    public static void main(String[] args) {
        //将"E:\new"目录下的多个文件及文件夹打包到"E:\new\abc.zip"文件中
        File file = ZipUtil.zip(FileUtil.file("E:\\new\\abc.zip"), true,
                FileUtil.file("E:\\new\\log"),
                FileUtil.file("E:\\new\\b.txt"),
                FileUtil.file("E:\\new\\homework"));
        System.out.println(file.getName());//运行结果:abc.zip
    }
}
//运行main方法后,就会在"E:\new"目录下多一个abc.zip压缩包
123456789101112131415161718192021
5 unzip方法–压缩包的解压
package com.gongsl.test;

import cn.hutool.core.util.ZipUtil;
import java.io.File;

/**
 * @Author: gongsl
 * @Date: 2021-01-02 17:55
 */
public class HutoolTest {
    public static void main(String[] args) {
        //将"E:\new\abc.zip"压缩包解压到"E:\new\test"目录下,返回值是解压到的目录
        File file = ZipUtil.unzip("E:\\new\\abc.zip","E:\\new\\test");
        System.out.println(file.getName());//运行结果:test
    }
}
//运行main方法后,就会将abc.zip压缩包中的所有文件或文件夹解压到"E:\new\test"目录下

摘选自https://blog.csdn.net/qq_15717719/article/details/112149994

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值