用Deflater与Inflater实现字节的压缩与解压

标签: deflater inflater 字节 | 发表时间:2012-08-23 15:44 | 作者:yangxiutian
出处:http://blog.csdn.net
package com.yangxiutian;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.DataFormatException;
import java.util.zip.Deflater;
import java.util.zip.Inflater;

public class ZLibUtils {
	/**
	 * 用zip算法解压压缩字节
	 * @param zipByte 输入的压缩字节
	 * @return	解压好的解压字节
	 * @throws IOException
	 */
	public static byte[] decompress(byte[] zipByte) throws IOException {
		ByteArrayOutputStream aos=new ByteArrayOutputStream(); 
		Inflater inflater=new Inflater();
		inflater.setInput(zipByte); 
		byte[] buff=new byte[1024];
		int byteNum=0;
		while(!inflater.finished()){
			try {
				byteNum=inflater.inflate(buff);
				aos.write(buff,0,byteNum);
			} catch (DataFormatException e) {
				e.printStackTrace();
			}
		}
		return aos.toByteArray();
	}
	
	/**
	 * 用zip算法压缩字节
	 * @param bytes 输入的待压缩字节
	 * @return	压缩就绪的字节
	 * @throws IOException
	 */
	public static byte[] compress(byte[] bytes) throws IOException {
		ByteArrayOutputStream aos=new ByteArrayOutputStream(); 
		Deflater inflater=new Deflater();
		inflater.setInput(bytes);
		inflater.finish();
		byte[] buff=new byte[1024];
		int byteNum=0;
		while(!inflater.finished()){
			byteNum=inflater.deflate(buff);
			aos.write(buff, 0, byteNum);
		}
		return aos.toByteArray();
	}

}

有时在内存中需要对某些数据块实现压缩与解压,ZipInputStream / ZipOutputStream的操作对象是文件,这时就需要用到Deflater / Inflater。实现代码如下:
作者:yangxiutian 发表于2012-8-23 15:44:52 原文链接
阅读:0 评论:0 查看评论

相关 [deflater inflater 字节] 推荐:

用Deflater与Inflater实现字节的压缩与解压

- - CSDN博客推荐文章
* 用zip算法解压压缩字节. * @param zipByte 输入的压缩字节. * @param bytes 输入的待压缩字节. 有时在内存中需要对某些数据块实现压缩与解压,ZipInputStream / ZipOutputStream的操作对象是文件,这时就需要用到Deflater / Inflater.

一个对象占用多少字节?

- - 编程语言 - ITeye博客
        老早之前写过一篇博客,是关于一个Integer对象到底占用多少字节的,现在看来,那篇文章竟然计算错了. 这次再去计算,是因为之前写的一篇 关于字长的文章里,看到了hotspot jvm里,对象占用空间是 8字节对齐的,再加上之前关于字节那文章里带着一点-XX:+UseCompressedOops压缩指针参数的疑问,重新探究了下一个对象到底占用多少字节,以及如何计算它占用空间的方法.

1021字节javascript写成的3D圣诞树

- RustingSword - hUrR DuRr
demo地址:http://js1k.com/2010-xmas/demo/856 (非Chrome浏览器会非常卡). 源码如下: . js1k里的东东让我觉得非常自卑. 更新1: blog.netoearth.com的同学,你好.

Scala 2.10 字节码将不再兼容 Java 1.5

- - ITeye资讯频道
近日,Scala 开发团队宣称 从 Scala 2.10 版本开始,字节码将不再兼任 Java 1.5. Scala官方称, 做出此决定是基于以下几方面考虑的:. 从 09年10月开始 Java 5 已经结束生命周期,官方不再支持. Java 1.5 的并发限制导致 Scala 并发库的连锁反应. 加大了 Scala 构建和测试套件的复杂度.

字节跳动数据库的过去、现状与未来

- - 掘金 后端
日前,字节跳动技术社区 ByteTech 举办的第四期字节跳动技术沙龙圆满落幕,本期沙龙以《字节云数据库架构设计与实战》为主题. 在沙龙中,字节跳动基础架构数据库资深工程师张雷,跟大家分享了《字节跳动数据库的过去、现状与未来》,本文根据分享整理而成. 数据库技术一直是信息技术中极其重要的一环,在步入云原生时代后,云基础设施和数据库进一步整合,弥补了传统数据库的痛点,带来了高可扩展性、全面自动化、快速部署、节约成本、管理便捷等优势.

JAVA内存使用--如何计算一个Java对象占用的字节数

- - Java - 编程语言 - ITeye博客
转自(http://blog.csdn.net/kp034/article/details/7077757). 通常,我们谈论的堆内存使用的前提是以“一般情况”为背景的. 1.某些情况下,JVM根本就没有把Object放入堆中. 例如:原则上讲,一个小的thread-local对象存在于栈中,而不是在堆中.

编译速度提升700%,字节跳动中台技术揭秘

- - InfoQ - 促进软件开发领域知识与创新的传播
在当今世界互联网时代下,平台化正兴起,从基础设施到人工智能等各个领域不断涌现的各类平台,对于软件开发人员及企业带来了深远的影响. 在国内提“数字化平台战略”大家可能会觉得比较抽象,比较远大空;我们更喜欢用”中台战略“这个词来描述,这样显得更接地气一些. 从BAT到美团、京东、华为都在调整组织架构,建立自己的中台部门,一时间”中台战略“仿佛成了那把角逐互联网下半场的取胜之匙.

字节跳动基于 ClickHouse 的复杂查询实现与优化

- - IT瘾-dev
ClickHouse 的执行模式相对比较简单,和Druid、ES 类似,其基本查询模式分为两个阶段:. 第一阶段,Coordinator 收到查询后将请求发送给对应的 worker 节点;. 第二阶段,Coordinator 收到各个 worker 节点的结果后汇聚起来处理后返回. ①当 Coordinator 收到请求后,由于student_distribute是一个分布式表,因此需要将SQL 改写为对local表查询,并转发请求给每一个shard的worker;.

java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等

- - ITeye博客
原文: java常用流处理工具StreamTool 常见的InputStream流转字符串, 转字节数组等等. 源代码下载: http://www.zuidaima.com/share/1550463397366784.htm. ava 常用流处理工具 StreamTool ,常见的InputStream 流转字符串, 转字节数组等等.

字节跳动开源高性能分布式训练框架BytePS,支持PyTorch、TensorFlow等

- - IT瘾-tuicool
最近,字节跳动发布了一款通用高性能分布式训练框架 BytePS,该框架支持TensorFlow、Keras、PyTorch 和MXNet,并且可以在 TCP 或 RDMA 网络上运行. BytePS GitHub 地址:https://github.com/bytedance/byteps. 根据该项目的 GitHub 页面,BytePS 显著优于目前的开源分布式训练框架.