java 实现对字符串的压缩和解压

压缩字符串:
1. 创建字符串写入输出流os, 用于接收压缩后的byte[]
2. 用os 创建 GZIPOutputStream 对象gos
3. 将要压缩的字符串写入gos
4. 关闭gos
5. 从os中获取压缩后的内容

注意: 第4步和第5步顺序不能颠倒, 否则会抛出异常java.io.EOFException: Unexpected end of ZLIB input stream.

完整代码如下:
public static byte[] zip(String src) {
ByteArrayOutputStream os = null;
GZIPOutputStream gos = null;
byte[] dest = null;
try {
if (src == null) {
return dest;
}

os = new ByteArrayOutputStream();
gos = new GZIPOutputStream(os);

gos.write(src.getBytes("utf-8"));
IOUtils.closeQuietly(gos);
dest = os.toByteArray();
}catch (Exception e) {
throw new RuntimeException("Error zip string:" + src, e);
}finally {
IOUtils.closeQuietly(os);
}

return dest;
}

解压字符串:

大致过程和压缩差不多,就不啰嗦了.
注意要先关闭GZIPInputStream 再获取内容

public static String unzip(byte[] bytes) {
if (bytes == null) {
return null;
}

ByteArrayInputStream is = null;
ByteArrayOutputStream os = null;
GZIPInputStream gis = null;
String dest = null;
try {
is = new ByteArrayInputStream(bytes);
os = new ByteArrayOutputStream();
gis = new GZIPInputStream(is);
byte[] buffer = new byte[100];
for (int length = gis.read(buffer, 0, buffer.length); length > 0; length = gis.read(buffer)) {
os.write(buffer, 0, length);
}
IOUtils.closeQuietly(gis);
IOUtils.closeQuietly(is);
dest = os.toString("utf-8");

}catch (Exception e) {
throw new RuntimeException("Error unzip bytes:" + bytes, e);
}finally {

IOUtils.closeQuietly(os);
}

return dest;
}
Java 字符串 压缩 解压 Java 字符串压缩和解 阅读详情

相关推荐

LZ78算法实现对任意字符串压缩解压

运行程序之后输入任意的字符串,将字符串转化成二进制数字字符串,然后利用LZ78算法实现对二进制字符串压缩解压,最后再恢复原来的字符串

java字符串压缩字符串解压

java字符串压缩字符串解压

1853 3401

Java 字符串压缩和文件压缩代码

Java 字符串压缩和文件压缩代码,详细说明参考博客地址: https://blog.csdn.net/zhangmingziliao/article/details/77414760

gzip对字符串压缩和解

package org.jc.plugins.gzip; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java....

ddak56357的博客 1346

数据库保存之Java字符串压缩解压

字符串太长,需要将字符串值存入数据库时,如果字段长度不够,则会出现插入失败;或者需要进行Http传输时,由于参数长度过长造成http传输失败等。

t194978的博客 3477

Java 字符串压缩/解压【开发记录】

1、场景:由于数据库字段长度有限,并且不能随意的修改数据库字段的配置,数据库的某个字段设置的长度可能在设置初期是满足需求的,后期由于业务变更或业务量增大导致该字段存储的数据增长,落库时可能因为该字段数据长度过长导致落库失败,基于这种场景我们就有必要进行字符串压缩,然后再进行落库,而落库后取出数据使用时再进行解压即可。2、CompressUtil类:使用Java8中的gzip来进行实现 3、注意点:1)CompressUtil在压缩过程和解过程使用统一字符集,防止压缩和解过程因为字符集不同导致结果与实际

单枪匹码 3101

PAT乙级——1078(字符串压缩和解 判断边界)Java实现

题目:字符串压缩解压 (20 分) 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。 解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。 本题需要你根据压缩解压的要求,对给定字符串进行处理。这里我们简...

熊仙森滴Blog 369

java 压缩和解,Java中的压缩和解压缩

Im having trouble coming up with a way too decompress a string in java, this is a basic java class im taking so it only requires basic commands, nothing too fancy. The objective it to able to typeC:\&...

weixin_31667199的博客 134

哈夫曼编码&文件压缩和解

赫夫曼编码也翻译为 哈夫曼编码(Huffman Coding),又称霍夫曼编码,是一种编码方式, 属于一种程序算法赫夫曼编码是赫哈夫曼树在电讯通信中的经典的应用之一。赫夫曼编码广泛地用于数据文件压缩。其压缩率通常在20%~90%之间赫夫曼码是可变字长编码(VLC)的一种。Huffman于1952年提出一种编码方法,称之为最佳编码。

m0_56280646的博客 5624

java 字符串大小压缩和解

实现Java字符串大小压缩和解 整体流程 首先,我们需要了解什么是字符串大小压缩和解字符串大小压缩是指将字符串中连续相同的字符压缩成数字加字符的形式,比如将"aaabbbccc"压缩成"3a3b3c";字符串大小解压则是将压缩后的字符串还原成原始的字符串。 下面是实现字符串大小压缩和解的步骤表格: 步骤 描述...

weixin_40251496的博客 681

Java 压缩字符串

[-] 引言关于压缩解压代码如下 1.引言 最近在做项目中,平台提供一个http服务给其他系统调用,然后我接收到其他系统的json格式的报文后去解析,然后用拿到的数据去调用corba服务,我再把corba的返回值封装完成json字符串返回给外部系统。遇到一个接口去调用corba服务,然后corba返回的数据经过封装后字符串的长度达到7M左右,导致http客户端无法正常的接收完所

韬晦潜胖蛇的专栏 1868

Java实现的一个简单的字符串压缩算法源码

将做工程过程经常用到的一些代码珍藏起来,如下的代码是关于Java实现的一个简单的字符串压缩算法的代码,希望能对各朋友也有用。 public class Contraction { public static String tempString = "acdesfghsadajfkqsfab"; public static void main(String[] args) { System...

weixin_43947759的博客 3760

java 与 c gzip_java gzip压缩解压

importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.RandomAccessFile;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream...

weixin_42521628的博客 209

Java利用Gzip对字符串进行压缩解压

在某些业务场景下,可能需要对字符串进行压缩解压压缩字符串可以使用 GZIPOutputStream 输出流来实现,而解压可以使用 GZIPInputStream 输入流来实现,下面先给出具体的参考代码,然后再分析其中的实现原理。​。...

JHIII的博客 5402

java将一串数据按照gzip方式压缩和解压缩

Ref : https://blog.csdn.net/qq_18895659/article/details/72190322 import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import ja...

D的博客 1027

java 文本压缩_java对文本字符串压缩解压

public class GzipUtil {/*** @param str* @return 压缩*/public static String compress(String str) {if (str == null || str.length() == 0) {return str;}ByteArrayOutputStream out = null;GZIPOutputStream gzip...

weixin_32694271的博客 1175

字符串,字节数组进行GZIP压缩和解压缩

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.GZIPInputStream; i

zxbcome的专栏 3917

java压缩解压缩_java GZIP压缩解压

import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class GZIPUtils {...

weixin_33087827的博客 140

android压缩字符串,如何使用与.Net兼容的GZIPOutputStream压缩和解压缩字符串

GZIP方法:public static byte[] compress(String string) throws IOException {ByteArrayOutputStream os = new ByteArrayOutputStream(string.length());GZIPOutputStream gos = new GZIPOutputStream(os);gos.write(...

weixin_28707535的博客 209
上一篇: endeavour 的使用
下一篇: Dom4j 生成xml并格式化输出
lic0112
博客等级 码龄18年 2粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值