当前位置: 移动技术网 > IT编程>开发语言>Java > Java压缩解压缩工具类

Java压缩解压缩工具类

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了java压缩解压缩工具类的具体代码,供大家参考,具体内容如下

package com.wdy.tools.utils.pressuitl;
 
import java.io.bufferedinputstream;
import java.io.bufferedoutputstream;
import java.io.file;
import java.io.fileinputstream;
import java.io.filenotfoundexception;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstream;
import java.io.outputstream;
import java.util.zip.zipentry;
import java.util.zip.zipfile;
import java.util.zip.zipinputstream;
import java.util.zip.zipoutputstream;
 
import org.apache.commons.logging.log;
 
import com.wdy.tools.utils.logutil;
 
/**
 * 压缩/解压缩工具类(zip格式)
 * 
 * @author wdy
 * @date 2016-08-23
 */
public class pressutil {
 
 private static final log log = logutil.getlog(pressutil.class);
 
 
 
 public static void main(string[] args) {
// pressutil.zipmultifile("d:\\nwp_trans\\nwp_h\\", "d:\\nwp_trans\\nwp_h\\wdy.zip");
 string sourcefilepath = "d:\\nwp_trans\\nwp_h\\"; 
   string zipfilepath = "d:\\nwp_trans\\nwp_h\\"; 
   string filename = "wdy"; 
   boolean flag = pressutil.filetozip(sourcefilepath, zipfilepath, filename);
   if(flag){ 
   log.info("文件打包成功!"); 
   }else{ 
   log.info("文件打包失败!"); 
   } 
 }
 
 /** 
  * 将存放在sourcefilepath目录下的源文件,打包成filename名称的zip文件,并存放到zipfilepath路径下 
  * @param sourcefilepath :待压缩的文件路径 
  * @param zipfilepath :压缩后存放路径 
  * @param filename :压缩后文件的名称(不包括扩展名) 
  * @return 
  */ 
 @suppresswarnings("resource")
 public static boolean filetozip(string sourcefilepath,string zipfilepath,string filename){ 
  boolean flag = false; 
  file sourcefile = new file(sourcefilepath); 
  fileinputstream fis = null; 
  bufferedinputstream bis = null; 
  fileoutputstream fos = null; 
  zipoutputstream zos = null; 
   
  if(sourcefile.exists() == false){ 
   log.info("待压缩的文件目录:"+sourcefilepath+"不存在.");
  }else{ 
   try { 
    file zipfile = new file(zipfilepath + "/" + filename +".zip"); 
    if(zipfile.exists()){ 
     log.info(zipfilepath + "目录下存在名字为:" + filename +".zip" +"打包文件.");
    }else{ 
     file[] sourcefiles = sourcefile.listfiles(); 
     if(null == sourcefiles || sourcefiles.length<1){ 
      log.info("待压缩的文件目录:" + sourcefilepath + "里面不存在文件,无需压缩.");
     }else{ 
      fos = new fileoutputstream(zipfile); 
      zos = new zipoutputstream(new bufferedoutputstream(fos)); 
      byte[] bufs = new byte[1024*10]; 
      for(int i=0;i<sourcefiles.length;i++){ 
       //创建zip实体,并添加进压缩包 
       zipentry zipentry = new zipentry(sourcefiles[i].getname()); 
       zos.putnextentry(zipentry); 
       //读取待压缩的文件并写进压缩包里 
       fis = new fileinputstream(sourcefiles[i]); 
       bis = new bufferedinputstream(fis, 1024*10); 
       int read = 0; 
       while((read=bis.read(bufs, 0, 1024*10)) != -1){ 
        zos.write(bufs,0,read); 
       } 
      } 
      flag = true; 
     } 
    } 
   } catch (filenotfoundexception e) { 
    e.printstacktrace(); 
    throw new runtimeexception(e); 
   } catch (ioexception e) { 
    e.printstacktrace(); 
    throw new runtimeexception(e); 
   } finally{ 
    //关闭流 
    try { 
     if(null != bis) bis.close(); 
     if(null != zos) zos.close(); 
    } catch (ioexception e) { 
     e.printstacktrace(); 
     throw new runtimeexception(e); 
    } 
   } 
  } 
  return flag; 
 } 
 
 /**
 * 压缩单个文件
 * @param filepath 要被压缩的文件的全路径,包含文件名d:/hello.txt
 * @param zippath 压缩后的全路径,包含文件名d:/hello.zip
 */
 public static void ziponefile(string filepath, string zippath) {
 try {
 file file = new file(filepath);
 file zipfile = new file(zippath);
 inputstream input = new fileinputstream(file);
 zipoutputstream zipout = new zipoutputstream(new fileoutputstream(zipfile));
 zipout.putnextentry(new zipentry(file.getname()));
 int temp = 0;
 while ((temp = input.read()) != -1) {
 zipout.write(temp);
 }
 input.close();
 zipout.close();
 } catch (exception e) {
 e.printstacktrace();
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网