利用hutool读取并解析zip压缩文件

hutool是近几年非常火的工具包,里面包含了我们日常开发常用的工具类,这里我们以zip压缩文件为例演示一下具体操作方法

首先我们创建一个压缩文件,目录为 D:\\zip\\测试.zip  里面存放两个excel文件 

操作用例如下:

public static void main(String[] args){
        String path="D:\\zip\\测试.zip";
        File file=new File(path);
        //读取压缩文件,这里中文名称需要使用GBK编码格式
        File unzip = ZipUtil.unzip(file, Charset.forName("gbk"));
        //解压完是一个目录
        if(FileUtil.isDirectory(unzip)){
            //循环遍历目录里面的文件
            List<File> fileList = FileUtil.loopFiles(unzip);
            for(File f:fileList){
                String name = f.getName();
                //利用excel工具类读取excel内容
                ExcelReader reader = ExcelUtil.getReader(f);
                List<Map<String, Object>> list = reader.readAll();
                System.out.println("文件名称:"+name);
                System.out.println("文件内容如下:");
                //打印文件内容
                System.out.println(JSONUtil.toJsonStr(list));
            }
        }
    }

ZipUtil的unzip方法获取到解压目录,然后通过FileUtil.loopFiles遍历目录,从而读取文件内容。

当然在利用接口上传文件时,我们需要将 MutipartFile转为临时文件,然后再进行解压操作具体如下:

public void importZipfile(MultipartFile file) throws IOException {
        //生成后缀为.zip的临时文件
        File tempFile = FileUtil.createTempFile(".zip", true);
        //将上传的文件写入临时文件
        FileUtil.writeFromStream(file.getInputStream(),tempFile);
        //解压压缩文件
        File unzip = ZipUtil.unzip(tempFile, Charset.forName("gbk"));
        try {
            //做业务处理
            //TODO
        }finally {
            //删除压缩包
            if(FileUtil.exist(tempFile)){
                FileUtil.del(tempFile);
            }
            //删除解压文件
            if(FileUtil.exist(unzip)){
                FileUtil.del(unzip);
            }
        }
    }

以上就是hutool工具类ZipUtil的基本用法,实际开发中可根据自己的需要查询相关api进行定制开发。

请登录后发表评论

    没有回复内容