本文实例为大家分享了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();
 }
 }
}

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

收藏 打印