JAVA中的deflate压缩实现
在文件的传输过程中,为了使大文件能够更加方便快速的传输,一般采用压缩的办法来对文件压缩后再传输,JAVA中的java.util.zip包中的Deflater和Inflater类为使用者提供了DEFLATE算法的压缩功能,以下是自已编写的压缩和解压缩实现,并以压缩文件内容为例说明,其中涉及的具体方法可查看JDK的API了解说明。
- /**
- *
- * @param inputByte
- * 待解压缩的字节数组
- * @return 解压缩后的字节数组
- * @throws IOException
- */
- public static byte[] uncompress(byte[] inputByte) throws IOException {
- int len = 0;
- Inflater infl = new Inflater();
- infl.setInput(inputByte);
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] outByte = new byte[1024];
- try {
- while (!infl.finished()) {
- // 解压缩并将解压缩后的内容输出到字节输出流bos中
- len = infl.inflate(outByte);
- if (len == 0) {
- break;
- }
- bos.write(outByte, 0, len);
- }
- infl.end();
- } catch (Exception e) {
- //
- } finally {
- bos.close();
- }
- return bos.toByteArray();
- }
- /**
- * 压缩.
- *
- * @param inputByte
- * 待压缩的字节数组
- * @return 压缩后的数据
- * @throws IOException
- */
- public static byte[] compress(byte[] inputByte) throws IOException {
- int len = 0;
- Deflater defl = new Deflater();
- defl.setInput(inputByte);
- defl.finish();
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- byte[] outputByte = new byte[1024];
- try {
- while (!defl.finished()) {
- // 压缩并将压缩后的内容输出到字节输出流bos中
- len = defl.deflate(outputByte);
- bos.write(outputByte, 0, len);
- }
- defl.end();
- } finally {
- bos.close();
- }
- return bos.toByteArray();
- }
- public static void main(String[] args) {
- try {
- FileInputStream fis = new FileInputStream("D:\\testdeflate.txt");
- int len = fis.available();
- byte[] b = new byte[len];
- fis.read(b);
- byte[] bd = compress(b);
- // 为了压缩后的内容能够在网络上传输,一般采用Base64编码
- String encodestr = Base64.encodeBase64String(bd);
- byte[] bi = uncompress(Base64.decodeBase64(encodestr));
- FileOutputStream fos = new FileOutputStream("D:\\testinflate.txt");
- fos.write(bi);
- fos.flush();
- fos.close();
- fis.close();
- } catch (Exception e) {
- //
- }
- }
JAVA中的deflate压缩实现的更多相关文章
- java解压多层目录中多个压缩文件和处理压缩文件中有内层目录的情况
代码: package com.xiaobai; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...
- FFmpeg在JAVA中的使用-音频提取&字幕压缩
由于项目需求中涉及到视频中音频提取,以及字幕压缩的功能,一直在研究ffmpeg,仅仅两个功能,却深受ffmpeg的折磨. 今天谈谈ffmpeg在java中的简单使用,首先下载FFmpeg包,官方地址: ...
- ASP.NET Web API中使用GZIP 或 Deflate压缩
对于减少响应包的大小和响应速度,压缩是一种简单而有效的方式. 那么如何实现对ASP.NET Web API 进行压缩呢,我将使用非常流行的库用于压缩/解压缩称为DotNetZip库.这个库可以使用Nu ...
- Java中的访问控制权限
简介 Java中为什么要设计访问权限控制机制呢?主要作用有两点: (1)为了使用户不要触碰那些他们不该触碰的部分,这些部分对于类内部的操作时必要的,但是它并不属于客户端程序员所需接口的一部分. (2) ...
- java中使用MD5加密技术
在项目中经常会对一些信息进行加密,现在常用的信息加密技术有:MD5.RSA.DES等,今天主要说一下,md5加密,以及如何在java代码根据自己的业务需求使用md5. MD5简介: MD5即Messa ...
- 如何在 apache 中开启 gzip 压缩服务
服务器设置 gzip 压缩是 web 开发里很普遍的做法.假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文 ...
- [Java 基础] 使用java.util.zip包压缩和解压缩文件
reference : http://www.open-open.com/lib/view/open1381641653833.html Java API中的import java.util.zip ...
- java中常用的工具类(二)
下面继续分享java中常用的一些工具类,希望给大家带来帮助! 1.FtpUtil Java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...
- 深入分析 Java 中的中文编码问题
登录 (或注册) 中文 IBM 技术主题 软件下载 社区 技术讲座 打印本页面 用电子邮件发送本页面 新浪微博 人人网 腾讯微博 搜狐微博 网易微博 Digg Facebook Twitter Del ...
随机推荐
- (博弈论)hdoj 1525 Euclid's Game
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1525 题目大意:Stan和Ollie在玩一个游戏,a和b两个数字,每次可以选择较大的数减去较小的数的若 ...
- 网站在域名前面添加logo小图标
如何给界面添加logo?就像百度的首页出现的图标. 1.准备一个ICO格式的小图标. 2.将制作好的ICO文件放到tomcat下的“D:\apache-tomcat-6.0.16\webapps\RO ...
- MD5加密类方法
package com.shkj.android.utils; import java.security.MessageDigest;import java.security.NoSuchAlgori ...
- 自行架设DNS的操作步骤及相关说明
关于什么是DNS及相关的名词及说明,请看 http://www.wdlinux.cn/bbs/viewthread.php?tid=1081&highlight=dns这里,只是说明,在wdd ...
- C#实现XML文件数据库存储
C#实现文件数据库 http://www.cnblogs.com/gaochundong/archive/2013/04/24/csharp_file_database.html#3100076 应用 ...
- IAR USING PRE- AND POST-BUILD ACTIONS
Using pre-build actions for time stamping If necessary, you can specify pre-build and post-build act ...
- Java常见排序算法之冒泡排序
在学习算法的过程中,我们难免会接触很多和排序相关的算法.总而言之,对于任何编程人员来说,基本的排序算法是必须要掌握的. 从今天开始,我们将要进行基本的排序算法的讲解.Are you ready?Let ...
- 容器的end()方法
容器的end()方法,返回一个迭代器,需要注意:这个迭代器不指向实际的元素,而是表示末端元素的下一个元素,这个迭代器起一个哨兵的作用,表示已经处理完所有的元素. 因此,在查找的时候,返回的迭代器,不等 ...
- PS-文字如何竖排版
单击文字输入工具“T”按钮,点住鼠标左键不要松手,会在“T”按钮的右边显示出其它形式的文字工具,拖动鼠标指向“直排文字”工具就可以了.
- Codeforces Educational Codeforces Round 5 A. Comparing Two Long Integers 高精度比大小,模拟
A. Comparing Two Long Integers 题目连接: http://www.codeforces.com/contest/616/problem/A Description You ...