欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java不解压直接读取压缩包中文件的实现方法

程序员文章站 2022-06-15 16:00:31
前言最近写了个上传压缩包,将压缩包中的图片保存的接口,所以翻了翻网上文件流操作的博客,总结了一个不用解压,直接读取文件的方法上代码@requestmapping(value = "packageupl...

前言

最近写了个上传压缩包,将压缩包中的图片保存的接口,所以翻了翻网上文件流操作的博客,总结了一个不用解压,直接读取文件的方法

上代码

@requestmapping(value = "packageupload")
 public void packageupload(httpservletrequest request,
    httpservletresponse response) {
  file file = null;
  try {
   multiparthttpservletrequest multipartrequest = (multiparthttpservletrequest) request;
   multipartfile multipartfile = multipartrequest.getfile("file");

   if (null == multipartfile){
    return;
   }
   string originalfilename = multipartfile.getoriginalfilename();

   //判断上传文件必须是zip或者是rar否则不允许上传
   string[] filename = originalfilename.split("\\.");
   if (!filename[1].equals("zip") && !filename[1].equals("rar")){
    return;
   }

   //创建临时文件时,名称长度必须大于2
   file = file.createtempfile(filename[0].length() <= 2 ? "压缩包" + filename[0] : filename[0], filename[1]);
   multipartfile.transferto(file);
   file.deleteonexit();
   zipfile zf = new zipfile(file);
   enumeration<?> zipenum = zf.entries();
   zipentry ze;
   while (zipenum.hasmoreelements()) {
    ze = (zipentry) zipenum.nextelement();
    if (!ze.isdirectory()) {
     long size = ze.getsize();
     if (size > 0) {
      string[] name = ze.getname().split("\\.");
      string emojiname = name[0];
      string type = name[1];

      if (type.equals("jpg") || type.equals("png") || type.equals("gif") || type.equals("jpeg")){
       string[] split = emojiname.split("/");
       string picname = split[1] + "." + type;
  
       inputstream is = zf.getinputstream(ze);
       logger.info("picname:" + picname + ",size:" + size + ",inputstream:" + is);
       ///到这里调用上传文件的方法上传这个图片就可以了
      }
     }
    }
   }
  } catch (exception e) {
   logger.error("packageupload_error:" , e);
  }
 }

到此这篇关于java不解压直接读取压缩包中文件的实现方法的文章就介绍到这了,更多相关java不解压读取压缩包内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!