第六十三篇:common-compress压缩解压文件

xiaoxiao2021-02-28  104

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(); } } 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
转载请注明原文地址: https://www.6miu.com/read-31817.html

最新回复(0)