Java压缩类库的使用-4.Apache commons compress中的打包、压缩类库
2009-11-29 17:21
597 查看
inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish
)。
Apache commons compress BZIP2压缩:(来源:http://blog.csdn.net/inkfish)
Apache commons compress GZIP压缩:(来源:http://blog.csdn.net/inkfish)
Apache commons compress ZIP压缩:(来源:http://blog.csdn.net/inkfish)
Apache commons compress AR打包:(来源:http://blog.csdn.net/inkfish)
Apache commons compress CPIO打包:(来源:http://blog.csdn.net/inkfish)
Apache commons compress TAR打包:(来源:http://blog.csdn.net/inkfish)
注:org.apache.commons.io包为Apache common io,项目首页:http://commons.apache.org/io/
,提供了IO操作的很多方便的方法,基于Apache 2.0 License,可用于商业用途。(来源:http://blog.csdn.net/inkfish)
)。
Apache commons compress BZIP2压缩:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; 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 org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream; import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; public class CommonsBZip2Compress extends Compress { @Override protected void doCompress(File srcFile, File destFile) throws IOException { OutputStream out = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); out = new GzipCompressorOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); IOUtils.copy(is, out); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(out); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { InputStream is = null; OutputStream os = null; try { File destFile = new File(destDir, FilenameUtils.getBaseName(srcFile.toString())); is = new GzipCompressorInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); os = new BufferedOutputStream(new FileOutputStream(destFile), bufferLen); IOUtils.copy(is, os); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(os); } } }
Apache commons compress GZIP压缩:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; 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 org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream; import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream; import org.apache.commons.io.FilenameUtils; import org.apache.commons.io.IOUtils; public class CommonsGZIPCompress extends Compress { @Override protected void doCompress(File srcFile, File destFile) throws IOException { OutputStream out = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); out = new BZip2CompressorOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); IOUtils.copy(is, out); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(out); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { InputStream is = null; OutputStream os = null; try { File destFile = new File(destDir, FilenameUtils.getBaseName(srcFile.toString())); is = new BZip2CompressorInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); os = new BufferedOutputStream(new FileOutputStream(destFile), bufferLen); IOUtils.copy(is, os); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(os); } } }
Apache commons compress ZIP压缩:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; 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 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.io.IOUtils; public class CommonsZipCompress extends Compress { /**用于单文件压缩*/ @Override protected void doCompress(File srcFile, File destFile) throws IOException { ZipArchiveOutputStream out = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); out = new ZipArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); ZipArchiveEntry entry = new ZipArchiveEntry(srcFile.getName()); entry.setSize(srcFile.length()); out.putArchiveEntry(entry); IOUtils.copy(is, out); out.closeArchiveEntry(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(out); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { ZipArchiveInputStream is = null; try { is = new ZipArchiveInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); ZipArchiveEntry entry = null; while ((entry = is.getNextZipEntry()) != null) { if (entry.isDirectory()) { File directory = new File(destDir, entry.getName()); directory.mkdirs(); } else { OutputStream os = null; try { os = new BufferedOutputStream( new FileOutputStream(new File(destDir, entry.getName())), bufferLen); IOUtils.copy(is, os); } finally { IOUtils.closeQuietly(os); } } } } finally { IOUtils.closeQuietly(is); } } }
Apache commons compress AR打包:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.compress.archivers.ar.ArArchiveEntry; import org.apache.commons.compress.archivers.ar.ArArchiveInputStream; import org.apache.commons.compress.archivers.ar.ArArchiveOutputStream; import org.apache.commons.io.IOUtils; public class CommonsArCompress extends Compress { @Override protected void doCompress(File srcFile, File destFile) throws IOException { ArArchiveOutputStream zout = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); zout = new ArArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); zout.putArchiveEntry(new ArArchiveEntry(srcFile, srcFile.getName())); IOUtils.copy(is, zout); zout.closeArchiveEntry(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(zout); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { ArArchiveInputStream is = null; try { is = new ArArchiveInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); ArArchiveEntry entry = null; while ((entry = is.getNextArEntry()) != null) { if (entry.isDirectory()) { File directory = new File(destDir, entry.getName()); directory.mkdirs(); } else { BufferedOutputStream bos = null; try { byte[] buffer = new byte[bufferLen]; bos = new BufferedOutputStream(new FileOutputStream( new File(destDir, entry.getName())), bufferLen); int len; long size = entry.getSize(); while (size > 0) { if (size < bufferLen) { len = is.read(buffer, 0, (int) size); size -= len; } else { len = is.read(buffer); size -= len; } bos.write(buffer, 0, len); } } finally { IOUtils.closeQuietly(bos); } } } } finally { IOUtils.closeQuietly(is); } } }
Apache commons compress CPIO打包:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.compress.archivers.cpio.CpioArchiveEntry; import org.apache.commons.compress.archivers.cpio.CpioArchiveInputStream; import org.apache.commons.compress.archivers.cpio.CpioArchiveOutputStream; import org.apache.commons.io.IOUtils; public class CommonsCPIOCompress extends Compress { @Override protected void doCompress(File srcFile, File destFile) throws IOException { CpioArchiveOutputStream out = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); out = new CpioArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); out.putArchiveEntry(new CpioArchiveEntry(srcFile, srcFile.getName())); IOUtils.copy(is, out); out.closeArchiveEntry(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(out); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { CpioArchiveInputStream is = null; try { is = new CpioArchiveInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); CpioArchiveEntry entry = null; while ((entry = is.getNextCPIOEntry()) != null) { if (entry.isDirectory()) { File directory = new File(destDir, entry.getName()); directory.mkdirs(); } else { BufferedOutputStream bos = null; try { byte[] buffer = new byte[bufferLen]; bos = new BufferedOutputStream(new FileOutputStream( new File(destDir, entry.getName())), bufferLen); int len; long size = entry.getSize(); while (size > 0) { if (size < bufferLen) { len = is.read(buffer, 0, (int) size); size -= len; } else { len = is.read(buffer); size -= len; } bos.write(buffer, 0, len); } } finally { IOUtils.closeQuietly(bos); } } } } finally { IOUtils.closeQuietly(is); } } }
Apache commons compress TAR打包:(来源:http://blog.csdn.net/inkfish)
package study.inkfish.compress; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import org.apache.commons.compress.archivers.tar.TarArchiveEntry; import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream; import org.apache.commons.io.IOUtils; public class CommonsTarCompress extends Compress { @Override protected void doCompress(File srcFile, File destFile) throws IOException { TarArchiveOutputStream out = null; InputStream is = null; try { is = new BufferedInputStream(new FileInputStream(srcFile), bufferLen); out = new TarArchiveOutputStream(new BufferedOutputStream(new FileOutputStream(destFile), bufferLen)); TarArchiveEntry entry = new TarArchiveEntry(srcFile.getName()); entry.setSize(srcFile.length()); out.putArchiveEntry(entry); IOUtils.copy(is, out); out.closeArchiveEntry(); } finally { IOUtils.closeQuietly(is); IOUtils.closeQuietly(out); } } @Override protected void doDecompress(File srcFile, File destDir) throws IOException { TarArchiveInputStream is = null; try { is = new TarArchiveInputStream(new BufferedInputStream(new FileInputStream(srcFile), bufferLen)); TarArchiveEntry entry = null; while ((entry = is.getNextTarEntry()) != null) { if (entry.isDirectory()) { File directory = new File(destDir, entry.getName()); directory.mkdirs(); } else { BufferedOutputStream bos = null; try { byte[] buffer = new byte[bufferLen]; bos = new BufferedOutputStream(new FileOutputStream( new File(destDir, entry.getName())), bufferLen); int len; long size = entry.getSize(); while (size > 0) { if (size < bufferLen) { len = is.read(buffer, 0, (int) size); size -= len; } else { len = is.read(buffer); size -= len; } bos.write(buffer, 0, len); } } finally { IOUtils.closeQuietly(bos); } } } } finally { IOUtils.closeQuietly(is); } } }
注:org.apache.commons.io包为Apache common io,项目首页:http://commons.apache.org/io/
,提供了IO操作的很多方便的方法,基于Apache 2.0 License,可用于商业用途。(来源:http://blog.csdn.net/inkfish)
相关文章推荐
- Apache commons compress中的打包、压缩类库
- JAVA开发必备的apache-commons基础类库使用
- Java压缩类库的使用-2.JDK中的打包、压缩类库
- Java压缩类库的使用-3.Apache Ant中的打包、压缩类库
- Java多层目录打包和解压代码(apache commons compress, io, lang)
- 使用commons-compress.jar压缩ZIP文件
- 【Java进阶】内省IntroSpector操作JavaBean和Apache-commons-dbutils对内省的使用
- Java使用apache的开源数据处理框架commons-dbutils完成增删改
- java项目中添加邮件发送功能(使用apache commons mail开源项目)
- Java 使用 org.apache.tools.zip.* 压缩文件源代码
- Java压缩类库的使用-1.总述
- java Apache Commons Mail 使用记录
- java 发送邮件 例子 (带附件的) 使用org.apache.commons.mail
- 使用commons-compress操作zip文件(压缩和解压缩)
- Java发送Email—使用org.apache.commons.mail
- java代理使用 apache ant实现文件压缩/解压缩
- Java使用apache的开源数据处理框架commons-dbutils完成查询结果集的各种处理输出(8种方式)
- Tomcat中使用commons-io-2.5发生的错误java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils
- [Java 常用类库]:StringCompress(字符串压缩)
- java 使用org.apache.tools.zip实现zip压缩和解压