扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
Java的输入输出库(I/O)具备压缩数据流的处理能力,利用该类库,您可以非常轻松地实现文本数据或二进制数据的压缩和解压缩,而且对来自任何文件或其他来源的数据流都可以通过该类库进行压缩和解压缩。在这篇文章中,我将简要介绍在Java中通过GZIP和Zip进行数据压缩的方法。
数据压缩类库
在底层,数据压缩类库使用的是通用输入输出数据流,更重要的是这些类库并不是符号数据流的一部分,比如Reader和Writer,而是基于字节的数据流InputStream和OutputStream。
这是因为压缩类库是依据字节而不是符号来处理数据的。如果需要使用混合数据流,您可以通过InputStreamReader和OutputStreamWriter将字节数据流转换为符号数据流。
在处理数据流的时候,您可能会用到以下这些类:
l DeflaterOutputStream: 这是所有压缩类库的基类。
l CheckedInputStream: 对于所有的输入数据流InputStream,这个类可以通过 getCheckSum()方法来返回校验值。
l CheckedOutputStream: 对于所有的输出数据流OutputStream,这个类可以通过 getCheckSum()方法来返回校验值。
l ZipOutputStream: 这是DeflaterOutputStream类的子类, 功能是将数据压缩为Zip格式。
l GZIPOutputStream: 这是DeflaterOutputStream类的子类,功能是将数据压缩为GZIP格式。
l InflaterInputStream: 这是压缩数据类的基类。
l ZipInputStream: InflaterInputStream类的子类,可以将数据压缩为Zip格式。
l GZIPInputStream: InflaterInputStream类的子类,可以将数据压缩为GZIP格式。
尽管数据压缩的算法有很多种,但是GZIP和Zip是最常用的方法,这也是Java标准类库中实现了这两种方法的原因。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者