0
点赞
收藏
分享

微信扫一扫

VSCode在windows系统下编译动态链接库不生成Lib文件

木匠0819 2024-08-14 阅读 6
解压压缩文件到指定目录,也可以接口接收压缩包进行处理

解压代码如下

package org.example.demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;


/**
 * @author : 骑猪撞地球QAQ
 * @date : 2024/8/14 14:19
 * @Description :  解压文件demo
 */


public class Demo {
    public static void main(String[] args) throws IOException {
        //1.创建一个File表示要解压的压缩包
        File src = new File("E:\\zip\\测试压缩文件.zip");
        //2.创建一个File表示压缩的目的地
        File dest = new File("E:\\解压后");
        //调用方法
        unzip(src, dest);
    }

    /**
     * 解压文件
     * 解压的本质:把压缩包里面的每一个文件或者文件夹读取出来,按照层级拷贝到目的地中
     * 方法可以优化,用try catch包起来,zip.close() 可以放在finally 中处理
     * @param src  压缩文件
     * @param dest 解压到目标文件内
     * @throws IOException
     */
    public static void unzip(File src, File dest) throws IOException {
        // 创建一个解压缩流用来读取压缩包中的数据
        ZipInputStream zip = new ZipInputStream(new FileInputStream(src), Charset.forName("GBK"));
        // 获取压缩包里面的每一个ZipEntry对象
        ZipEntry entry;
        // 表示当前在压缩包中获取的文件或者文件夹
        while ((entry = zip.getNextEntry()) != null) {
            if (entry.isDirectory()) {
                //文件夹:需要在目的地dest处创建一个同样的文件夹
                File file = new File(dest, entry.toString());
                file.mkdirs();
            } else {
                //文件:需要读取压缩包中的文件,并把他存到目的地dest文件夹中(按照层级目录存放)
                FileOutputStream fos = new FileOutputStream(new File(dest, entry.toString()));
                int b;
                while ((b = zip.read()) != -1) {
                    // 写入文件
                    fos.write(b);
                }
                fos.close();
                // 压缩包中的一个文件处理完毕
                zip.closeEntry();
            }
        }
        // 一定要关闭流
        zip.close();
    }
}
如果是前端传入的压缩文件:
		// 使用MultipartFile接收文件,转为File 
        //压缩包存储路径
        String temp = "E:\\face\\import\\";
        File destFile = FileUtil.mkdir(temp);
        try {
            //步骤1、把上传的压缩包文件保存到指定压缩包路径
            multipartFile.transferTo(destFile);
        } catch (IOException e) {
            //运行报错直接返回错误信息
            log.error(e.getMessage());
        }
        // 步骤2、调用Hutool的ZipUtil压缩工具类的unzip方法来进行对压缩包文件的解压,解压到临时文件内
        File mkdir = FileUtil.mkdir(temp + "1");
        // 调用上面的方法,传入destFile、mkdir 既可进行解压
举报

相关推荐

0 条评论