commons-compress简单zip压缩解压
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
package javasedemo.zip;
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 press.archivers.ArchiveEntry;
import press.archivers.ArchiveInputStream;
import press.archivers.ArchiveOutputStream;
import press.archivers.ArchiveStreamFactory;
import press.archivers.zip.ZipArchiveEntry;
import press.utils.IOUtils;
public class ZipDemo {
public static void main(String[] args) {
File file=new File("C:\\Users\\tpc\\Desktop\\测试视频");
// compressFiles2Zip(file, "C:\\Users\\tpc\\Desktop\\testzip.zip");
decompressZip("C:\\Users\\tpc\\Desktop\\testzip.zip","C:\\Users\\tpc\\Desktop\\testzip");
}
/**
* 递归遍历所有文件
* @param file
*/
public static void putListFile2Archive(File file,String pathName,ArchiveOutputStream aos){ try {
if(file.isFile()){
//建立压缩包中的目录结构
ZipArchiveEntry zipArchiveEntry = new ZipArchiveEntry(pathName);
//添加成员到压缩包对象中
aos.putArchiveEntry(zipArchiveEntry);
//获取当前文件的输入流
InputStream is=new FileInputStream(file);
//将输入流内容读取到压缩包输出流中
IOUtils.copy(is, aos);
//清除entry对象准备添加下一个文件
aos.closeArchiveEntry();
is.close();
}else{
File[] files=file.listFiles();
if(files.length>0){
for (File f : files) {
putListFile2Archive(f,pathName+File.separator+f.getName(),aos);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 将文件打包成压缩包
*
* @param files
* @param zipFilePath
*/
public static void compressFiles2Zip(File file, String zipFilePath) {
if (file != null && file.exists() && isEndsWithZip(zipFilePath)) {
ArchiveOutputStream zaos = null;
try {
File zipFile = new File(zipFilePath).getParentFile();
//如果保存的文件上级目录不存在则创建
if(!zipFile.exists()){
zipFile.mkdirs();
}
FileOutputStream fos=new FileOutputStream(zipFilePath);
zaos=new ArchiveStreamFactory("utf-8").createArchiveOutputStream("zip", fos);
//zaos = new ZipArchiveOutputStream(zipFile);
// Use Zip64 extensions for all entries where they are
// required
//zaos.setUseZip64(Zip64Mode.AsNeeded);
//递归遍历
putListFile2Archive(file,file.getName(),zaos);
//提交,关闭
zaos.finish();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (zaos != null) {
zaos.close();
}