java解压压缩文件至指定文件夹

  

前面,笔者讲到。如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把压缩包解压为正常文件包,要比把文件打包为zip简单一点。因为存在多级文件的压缩,却不存在多级文件的解压缩。也就是说,压缩时,你要把所有文件都塞到压缩包里。而解压缩只需要解压一级,压缩包里面的压缩文件则不必理会。
<强>直接上代码喽:

  
 <代码>/* *
  *解压文件
  * @param zipPath要解压的目标文件
  * @param descDir指定解压目录
  * @return解压结果:成功,失败
  */@SuppressWarnings (“rawtypes”)
  zipPath公共布尔decompressZip(字符串,字符串descDir) {
  文件zipFile=新文件(zipPath);
  布尔标志=false;
  文件pathFile=新文件(descDir);
  如果(! pathFile.exists ()) {
  pathFile.mkdirs ();
  }
  ZipFile邮政=零;
  尝试{
  邮政=new ZipFile (ZipFile Charset.forName (“gbk”));//防止中文目录,乱码
  (枚举项=zip.entries ();entries.hasMoreElements ();) {
  ZipEntry入口=(ZipEntry) entries.nextElement ();
  字符串zipEntryName=entry.getName ();
  InputStream的=zip.getInputStream(入口);//指定解压后的文件夹+当前邮政文件的名称
  字符串outPath=(descDir + zipEntryName)。替换(“/?File.separator);//判断路径是否存在,不存在则创建文件路径
  文件文件=新文件(outPath。substring (0, outPath.lastIndexOf (File.separator)));
  如果(! file.exists ()) {
  file.mkdirs ();
  }//判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
  如果(新文件(outPath) .isDirectory ()) {
  继续;
  }//保存文件路径信息(可利用md5.zip名称的唯一性,来判断是否已经解压)
  System.err。println(“当前zip解压之后的路径为:" + outPath);
  OutputStream=新FileOutputStream (outPath);
  byte[]来=新字节[2048];
  int len;
  在((len=in.read(来)在0){
  out.write(来,0,len);
  }
  in.close ();
  out.close ();
  }
  国旗=true;//必须关闭,要不然这个邮政文件一直被占用着,要删删不掉,改名也不可以,移动也不行,整多了,系统还崩了。
  zip.close ();
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  返回国旗;
  } 
  

<强>找个例子实现一下:
<强>就你了!
癹ava解压压缩文件至指定文件夹”

  

<强>调用:

  
 <代码>字符串deal_zip=" C: \ \ 20180909. zip”;
  字符串agter_zip=" D: \ \ red_ant_file ";//解压完塞到这里吧
  布尔is_success=AllServiceIsHere.decompressZip (deal_zip agter_zip);
  如果(is_success) {
  System.err.println(“恭喜你,解压成功!”);
  其他}{
  System.err。println(“对不起,你失败了!”);
  } 
  

<>强走你!

  

癹ava解压压缩文件至指定文件夹”

  

<强>嗯嗯,达到了我所要求的。赶集去喽!
癹ava解压压缩文件至指定文件夹”
癹ava解压压缩文件至指定文件夹”

  

癹ava解压压缩文件至指定文件夹”

java解压压缩文件至指定文件夹