Java工程师知识树

Java基础-IO流-zip操作

2021-01-14  本文已影响0人  HughJin

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

上一篇 下一篇

猜你喜欢

热点阅读