首页 > 开发 > Java > 正文

Java压缩解压缩工具类

2024-07-14 08:43:13
字体:
来源:转载
供稿:网友

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

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


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表