前言

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

上代码

@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不解压读取压缩包内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!