commons-compress简单zip压缩解压

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();

}

相关文档
最新文档