Java压缩类库的使用-1.总述

简介:

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish)。

  压缩是编程中常见的技巧,多用于大文件压缩,数据流压缩等。在Java类库中,内置了jar、ZIP、GZIP、ZLIB等的支持(见java.util.zip、java.util.jar包)。另外在Apache项目下Ant中ant.jar的org.apache.tools.tar、org.apache.tools.zip、org.apache.tools.bzip2分别提供了tar、zip、bzip2的支持;Apache commons compress项目里提供了对AR、BZIP、CPIO、GZP、TAR、ZIP的支持。7-zip 提供了LZMA格式的压缩(public domain),QuickLZ 提供了quicklz格式的压缩(GPL),oberhumer.com 提供LZO格式的压缩(GPL),hadoop-gpl-compression 则对LZO的c实现用JNI进行包装,提供更快捷的LZO压缩。(来源:http://blog.csdn.net/inkfish)

  严格来说,TAR、AR、CPIO并不属于压缩软件,而是一种打包软件,它能把很多文件、文件夹打包成一个文件,供压缩程序压缩。而咱们在windows中熟悉的zip、rar,严格的说是具备打包和压缩功能的一种格式。(来源:http://blog.csdn.net/inkfish)

      因为本人在项目中需主要需要应用压缩工具对网络中传输的数据流进行压缩,因此重点关心对Stream的压缩,而不关心对多个文件的压缩,这在代码中也会有所体现。因此,本系列的代码一般仅适用于压缩流或压缩一个文件。(来源:http://blog.csdn.net/inkfish)

  LZMA、QuickLZ、LZO因为提供的类库不支持stream形式压缩或提供的example太难看懂,故不作测试。这里还有一个需要提醒,Apache commons compress的tar、zip、bzip2来最初源于ant,但经过项目间迁移、演化,API及性能有所不同。(来源:http://blog.csdn.net/inkfish)

  所有的格式均提供压缩和解压两个方法,再次提醒这里所有代码不适用于压缩多个文件、文件夹。下面是抽象的压缩、加压缩类:(来源:http://blog.csdn.net/inkfish)

package study.inkfish.compress; import java.io.File; import java.io.IOException; public abstract class Compress { public void compress(File srcFile, File destFile) { destFile.getParentFile().mkdirs(); try { doCompress(srcFile, destFile); } catch (IOException ex) { ex.printStackTrace(); } } public void decompress(File srcFile, File destDir) { destDir.mkdirs(); try { doDecompress(srcFile, destDir); } catch (IOException ex) { ex.printStackTrace(); } } protected int bufferLen = 1024 * 1024;//buffer size: 1MByte protected abstract void doCompress(File srcFile, File destFile) throws IOException; protected abstract void doDecompress(File srcFile, File destDir) throws IOException; }

目录
相关文章
|
1月前
|
存储 Java 文件存储
如何用 Java 压缩 ZIP 文件?
【2月更文挑战第21天】
34 1
|
3月前
|
存储 算法 Java
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
从零开始学习 Java:简单易懂的入门指南之IO序列化、打印流、压缩流(三十三)
|
5月前
|
Java
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
java 读取文件 获取byte[]字节 并执行Gzip的压缩和解压
49 0
|
5月前
|
Java
Java实现多文件打包成压缩包下载
Java实现多文件打包成压缩包下载
166 0
|
1月前
|
SQL Java Apache
Java类库
Java类库
15 0
|
6月前
|
Java 数据库连接
Java类库的使用
Java类库(Java Class Library)是一组预定义的类和接口,提供了丰富的功能和工具,可以帮助开发人员快速开发Java应用程序。Java类库是Java开发的核心部分,包含了各种常用的类和接口,用于处理字符串、日期、集合、输入输出、网络通信、图形界面等各种任务。 Java类库分为两部分:核心类库(Core Class Library)和扩展类库(Extension Class Library)。 核心类库包括了Java语言的基本类和接口,如Object、String、Math、ArrayList、HashMap等。这些类和接口提供了常用的功能和数据结构,可以直接在代码中使用。
72 0
|
3月前
|
缓存 安全 Java
JAVA 常用类库 StringBuffer 和 StringBuilder
● 当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。 ● 和 String 类不同的是,StringBuffer 和 StringBuilder类的对象能够被多次的修改,并且不产生新的未使用对象。 ● StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。 ● 由于 StringBuilder 相较于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder类。然而在应用程序要求线程安全的情况下,
|
4月前
|
安全 Java 关系型数据库
Java核心类库
Java核心类库
58 1
|
4月前
|
Java API Apache
Java之打印流,压缩流,工具包的详细解析
4. 打印流 4.1 概述 平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于java.io.PrintStream类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。 4.2 PrintStream类
32 0
|
5月前
|
Java
Java实现zip文件压缩:单个文件、文件夹以及文件和文件夹的压缩
Java实现zip文件压缩:单个文件、文件夹以及文件和文件夹的压缩