美文网首页Java工程师知识树
Java基础-IO流-zip操作

Java基础-IO流-zip操作

作者: HughJin | 来源:发表于2021-01-14 07:17 被阅读0次

    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

    相关文章

      网友评论

        本文标题:Java基础-IO流-zip操作

        本文链接:https://www.haomeiwen.com/subject/rzcinktx.html