这篇文章主要为大家详细介绍了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();
}
}
} 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持CodeAE代码之家。
原文链接:https://blog.csdn.net/wdy_2099/article/details/72916282
|