浅沫记忆 发表于 2021-10-6 15:37:47

Java压缩解压缩工具类

这篇文章主要为大家详细介绍了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;
      for(int i=0;i<sourcefiles.length;i++){
       //创建zip实体,并添加进压缩包
       zipentry zipentry = new zipentry(sourcefiles.getname());
       zos.putnextentry(zipentry);
       //读取待压缩的文件并写进压缩包里
       fis = new fileinputstream(sourcefiles);
       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();
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/wdy_2099/article/details/72916282

http://www.zzvips.com/article/172426.html
页: [1]
查看完整版本: Java压缩解压缩工具类