侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 38 个标签
  • 累计收到 2 条评论
隐藏侧边栏

java上传zip文件并解压读取

哒卟刘先生
2022-01-07 / 0 评论 / 0 点赞 / 105 阅读 / 1,458 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-01-08,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

最近遇到一个这样的需求:传一个压缩包给后台,后台保存后解压读取里面的文件,现学现做。在这里做个记录

文件上传

文件上传有很多方法,这里推荐一个自己感觉挺好用的一种,代码奉上:

 @PostMapping(value = "/import", headers = "content-type=multipart/*")

    public R importSqlLite(@RequestParam("file") MultipartFile file) {
     String path = "C:/Users/aaa/Desktop/新建文件夹/";

            File newFile = new File(path + file.getOriginalFilename());
            //通过CommonsMultipartFile的方法直接写文件(注意这个时候)

            file.transferTo(newFile);
    }

文件解压

参考了很多博客,发现了两中解压方式,一种是用org.apache.tools.zip.ZipFile这个包的 工具一种是SpringBoot自带的net.lingala.zip4j.core.ZipFile。因为用的是SpringBoot项目就用的第二种,代码奉上:

 //解压路径
    private String dest = "C:\\Users\\aaa\\Desktop\\新建文件夹";



    public String Uncompress(String source) {
        List<String> picPaths = new ArrayList<>();
        try {
            File zipFile = new File(source);
            ZipFile zFile = new ZipFile(zipFile);// 首先创建ZipFile指向磁盘上的.zip文件

            zFile.setFileNameCharset("GBK");

            File destDir = new File(dest);// 解压目录 
              if (zFile.isEncrypted()) {   
                  zFile.setPassword(password.toCharArray());  // 设置密码   
              }
              zFile.extractAll(dest);      // 将文件抽出到解压目录(解压)   
     
             List<net.lingala.zip4j.model.FileHeader > headerList = zFile.getFileHeaders(); 
              List<File> extractedFileList= newArrayList<File>(); 
              for(FileHeader fileHeader : headerList) { 
                  if (!fileHeader.isDirectory()) { 
                      extractedFileList.add(new File(destDir,fileHeader.getFileName())); 
                  } 
              } 
              File [] extractedFiles = new File[extractedFileList.size()]; 
             extractedFileList.toArray(extractedFiles); 
              for(File f:extractedFileList){
                System.out.println(f.getAbsolutePath()+"....");
              }

      }catch(ZipException e) {
      } 

0

评论区