java+lz4+压缩文件夹_使用commons-compress操作zip文件(压缩和解压缩)

/*** Zip文件工具类

*@authorLuxh*/

public classZipFileUtil {/*** 把文件压缩成zip格式

*@paramfiles 需要压缩的文件

*@paramzipFilePath 压缩后的zip文件路径 ,如"D:/test/aa.zip";*/

public static voidcompressFiles2Zip(File[] files,String zipFilePath) {if(files != null && files.length >0) {if(isEndsWithZip(zipFilePath)) {

ZipArchiveOutputStream zaos= null;try{

File zipFile= newFile(zipFilePath);

zaos= newZipArchiveOutputStream(zipFile);//Use Zip64 extensions for all entries where they are required

zaos.setUseZip64(Zip64Mode.AsNeeded);//将每个文件用ZipArchiveEntry封装//再用ZipArchiveOutputStream写到压缩文件中

for(File file : files) {if(file != null) {

ZipArchiveEntry zipArchiveEntry= newZipArchiveEntry(file,file.getName());

zaos.putArchiveEntry(zipArchiveEntry);

InputStream is= null;try{

is= new BufferedInputStream(newFileInputStream(file));byte[] buffer = new byte[1024 * 5];int len = -1;while((len = is.read(buffer)) != -1) {//把缓冲区的字节写入到ZipArchiveEntry

zaos.write(buffer, 0, len);

}//Writes all necessary data for this entry.

zaos.closeArchiveEntry();

}catch(Exception e) {throw newRuntimeException(e);

}finally{if(is != null)

is.close();

}

}

}

zaos.finish();

}catch(Exception e){throw newRuntimeException(e);

}finally{try{if(zaos != null) {

zaos.close();

}

}catch(IOException e) {throw newRuntimeException(e);

}

}

}

}

}/*** 把zip文件解压到指定的文件夹

*@paramzipFilePath zip文件路径, 如 "D:/test/aa.zip"

*@paramsaveFileDir 解压后的文件存放路径, 如"D:/test/"*/

public static voiddecompressZip(String zipFilePath,String saveFileDir) {if(isEndsWithZip(zipFilePath)) {

File file= newFile(zipFilePath);if(file.exists()) {

InputStream is= null;//can read Zip archives

ZipArchiveInputStream zais = null;try{

is= newFileInputStream(file);

zais= newZipArchiveInputStream(is);

ArchiveEntry archiveEntry= null;//把zip包中的每个文件读取出来//然后把文件写到指定的文件夹

while((archiveEntry = zais.getNextEntry()) != null) {//获取文件名

String entryFileName =archiveEntry.getName();//构造解压出来的文件存放路径

String entryFilePath = saveFileDir +entryFileName;byte[] content = new byte[(int) archiveEntry.getSize()];

zais.read(content);

OutputStream os= null;try{//把解压出来的文件写到指定路径

File entryFile = newFile(entryFilePath);

os= new BufferedOutputStream(newFileOutputStream(entryFile));

os.write(content);

}catch(IOException e) {throw newIOException(e);

}finally{if(os != null) {

os.flush();

os.close();

}

}

}

}catch(Exception e) {throw newRuntimeException(e);

}finally{try{if(zais != null) {

zais.close();

}if(is != null) {

is.close();

}

}catch(IOException e) {throw newRuntimeException(e);

}

}

}

}

}/*** 判断文件名是否以.zip为后缀

*@paramfileName 需要判断的文件名

*@return是zip文件返回true,否则返回false*/

public static booleanisEndsWithZip(String fileName) {boolean flag = false;if(fileName != null && !"".equals(fileName.trim())) {if(fileName.endsWith(".ZIP")||fileName.endsWith(".zip")){

flag= true;

}

}returnflag;

}

}

测试代码:

[java] view plain copy print?

packagecn.luxh.test;importjava.io.File;importorg.junit.Test;importcn.luxh.utils.ZipFileUtil;/*** 测试ZipFileUtil的压缩和解压缩方法

*@authorLuxh*/

public classZipFileUtilTest {

@Testpublic voidtestCompressFiles2Zip() {//存放待压缩文件的目录

File srcFile = new File("D:/test");//压缩后的zip文件路径

String zipFilePath = "d:/test2/test.zip";if(srcFile.exists()) {

File[] files=srcFile.listFiles();

ZipFileUtil.compressFiles2Zip(files, zipFilePath);

}

}

@Testpublic voidtestDecompressZip() {//压缩包所在路径

String zipFilePath = "d:/test2/test.zip";//解压后的文件存放目录

String saveFileDir = "d:/test2/";//调用解压方法

ZipFileUtil.decompressZip(zipFilePath, saveFileDir);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值