Java压缩解压缩工具类

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

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

(0)

相关推荐

  • 利用Java实现zip压缩/解压缩

    由于网络带宽有限,所以数据文件的压缩有利于数据在Internet上的快速传输,同时也节 省服务器的外存空间. Java 1.1实现了I/O数据流与网络数据流的单一接口,因此数据的压缩.网络传输和解 压缩的实现比较容易,下面介绍利用ZipEntry.ZipInputStream和ZipOutputStream三个Java 类实现zip数据压缩方式的编程方法. zip压缩文件结构:一个zip文件由多个entry组成,每个entry有一个唯一的名称,entry的 数据项存储压缩数据. 与zip文件有关

  • 通过java api实现解压缩zip示例

    通过java api实现zip压缩格式的压缩与解压缩 复制代码 代码如下: package com.hongyuan.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enu

  • Java解压缩zip - 解压缩多个文件或文件夹实例

    Java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构: 测试的压缩内容:English文件夹和同级的两个excel文件 File[]

  • Java实现的zip压缩及解压缩工具类示例

    本文实例讲述了Java实现的zip压缩及解压缩工具类.分享给大家供大家参考,具体如下: 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 ja

  • java使用gzip实现文件解压缩示例

    复制代码 代码如下: package com.cjonline.foundation.cpe.action; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.

  • Java 文件解压缩实现代码

    Java实现压缩文件的解压缩操作,缺点是压缩文件内不能含有文件名为中文的的文件,否则会出现如下错误: 复制代码 代码如下: Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(Unknown Source) at java.util.zip.ZipInputStream.readLOC(Unknown Source) at

  • 实例展示使用Java压缩和解压缩7z文件的方法

    压缩为7z文件 首先网络上对7z的压缩内容很少. 尤其是java调用进行压缩的是更少了. 一下是自己完成的一个压缩. 本人进行了测试是成功的. 将压缩的流写如磁盘一个压缩文件中. 然后使用7z的压缩软件进行打开解压. 7-zip的开源项目7-zip-JBinding项目地址(sourceforge) 不多说,调用7z源码进行压缩的方法如下. public byte[] lzmaZip(String xml) throws IOException{ BufferedInputStream inSt

  • java 压缩和解压缩Zip、Jar、Gzip文件实例代码

    我们经常会使用WinZIP等压缩软件将文件进行压缩以方便传输.在java里面也提供了将文件进行压缩以减少传输时的数据量的类,可以很方便的将文件压缩成ZIP.JAR.GZIP等形式,GZIP主要是在Linux系统下的压缩文件. 下面主要讲的就是ZIP形式的压缩文件,而JAR.GZIP形式的压缩文件也是类似的用法. ZIP是一种很常见的压缩形式,在java中要实现ZIP的压缩主要用到的是java.util.zip这个包里面的类.主要有ZipFile. ZipOutputStream.ZipInput

  • java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解

    java ant包中的org.apache.tools.zip实现压缩和解压缩实例详解 其实apache中的ant包(请自行GOOGLE之ant.jar)中有一个更好的类,已经支持中文了,我们就不重复制造轮子了,拿来用吧, 这里最主要的功能是实现了 可以指定多个文件 到同一个压缩包的功能 用org.apache.tools.zip压缩/解压缩zip文件的例子,用来解决中文乱码问题. 实例代码: import Java.io.BufferedInputStream; import java.io.

  • Java压缩解压缩工具类

    本文实例为大家分享了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压缩文件工具类ZipUtil使用方法代码示例

    本文实例通过Java的Zip输入输出流实现压缩和解压文件,前一部分代码实现获取文件路径,压缩文件名的更改等,具体如下: package com.utility.zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import

  • Android Zip解压缩工具类分享

    本文实例为大家分享了Android Zip解压缩工具类的具体代码,供大家参考,具体内容如下 package com.example.zip.commons.utils; import android.util.Log; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList

  • java文件读写工具类分享

    本文实例为大家分享了java文件读写工具类的具体代码,供大家参考,具体内容如下 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileReader; import java.io.FileWriter;

  • Java使用excel工具类导出对象功能示例

    本文实例讲述了Java使用excel工具类导出对象功能.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFSheet; import

  • java的Arrays工具类实战

    java.util.Arrays类能方便地操作数组,它提供的所有方法都是静态的.静态方法是属于类的,不是属于类的对象.所以可以直接使用类名加方法名进行调用.Arrays作为一个工具类,能很好的操作数组.下面介绍主要使用的几个函数. 1.fill方法 fill方法主要用来填充数组,这里我们举最简单的int类型吧(其它类型的一样) 看Arrays的fill源码 示例代码: Java代码 publicstaticvoidmain(String[] args) { inta[]=newint[5]; /

  • Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    本文实例讲述了Java日期操作方法工具类.分享给大家供大家参考,具体如下: package com.gcloud.common; import org.apache.http.util.TextUtils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Patte

  • Java日期处理工具类DateUtils详解

    本文实例为大家分享了Java日期处理工具类DateUtils的具体代码,供大家参考,具体内容如下 import java.sql.Timestamp; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * <日期时间处理工具类> */ public class DateUtils { /** * Dat

  • 常用java正则表达式的工具类

    本文实例为大家分享了java正则表达式工具类的具体代码,供大家参考,具体内容如下 import com.google.common.base.Strings; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 常用的正则表达式 * Created by tookbra on 2016/4/7. */ public class RegexUtils { /** * 判断是否是正确的IP地址 * * @para

随机推荐