commons-compress
是Apache开源组织提供的用于压缩解压的工具包。commons-compress
支持常见的压缩格式,今天为大家写一个压缩解压zip文件的例子,关于更多commons-compress
的示例可参见:Commons Compress – Commons Compress Examples
在之前,我也写过一篇博客《JAVA文件压缩、解压》,使用了JDK中的API为我们提供的方法,下面我们来使用commons-compress
完成文件的压缩与解压。
package com.gujin.compress;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.utils.IOUtils;
public class ZipTest
{
public static void main(String[] args) throws Exception
{
zip();
unZip();
}
public static void zip() throws Exception
{
File zipFile = new File("test.zip");
ZipArchiveOutputStream stream = new ZipArchiveOutputStream(zipFile);
File[] files = new File("src/com/gujin/compress").listFiles();
for (File file : files)
{
InputStream in = new FileInputStream(file);
ZipArchiveEntry entry = new ZipArchiveEntry(file, file.getName());
// 添加一个条目
stream.putArchiveEntry(entry);
IOUtils.copy(in, stream);
// 结束
stream.closeArchiveEntry();
in.close();
}
stream.finish();
stream.close();
}
public static void unZip() throws Exception
{
InputStream stream = new FileInputStream("test.zip");
ZipArchiveInputStream inputStream = new ZipArchiveInputStream(stream);
ZipArchiveEntry entry = null;
while ((entry = inputStream.getNextZipEntry()) != null)
{
System.out.println(entry.getName());
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
//读取内容
IOUtils.copy(inputStream, outputStream);
System.out.println(outputStream.toString());
}
inputStream.close();
stream.close();
}
}