package test.compress;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class StringCompress {
// 压缩
public static String compress(String str) throws IOException {
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(out);
gzip.write(str.getBytes());
gzip.close();
return out.toString("ISO-8859-1");
}
// 解压缩
public static String decompress(String str) throws IOException {
if (str == null || str.length() == 0) {
return str;
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
GZIPInputStream gunzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n;
while ((n = gunzip.read(buffer)) >= 0) {
out.write(buffer, 0, n);
}
return out.toString("GBK");
}
public static void test() throws IOException {
String str1 = "";
for (int i = 0; i < 100; i++) {
str1 += "<word>goodjob中文</word>";
}
sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
// 压缩前进行BASE64
String base64data1 = encoder.encodeBuffer(str1.getBytes());
System.out.println(base64data1.length());
try {
String compressed = compress(str1);
// 压缩后进行BASE64
String base64data2 = encoder.encodeBuffer(compressed.getBytes("ISO-8859-1"));
System.out.println(base64data2.length());
String str2 = decompress(new String(decoder.decodeBuffer(base64data2),"ISO-8859-1"));
System.out.println(str2.equals(str1));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
test();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
分享到:
相关推荐
运行程序之后输入任意的字符串,将字符串转化成二进制数字字符串,然后利用LZ78算法实现对二进制字符串压缩解压,最后再恢复原来的字符串
C# 3种方法实现字符串的压缩与解压操作.
主要介绍了java字符串压缩解压示例,先压缩,再加密,再压缩,数据越大,压缩比例越高,需要的朋友可以参考下
字符串的压缩和解压,java语言编写,zip实现,代码编写
华为机考2017:字符串解压缩算法,通过率100%
字符串的压缩和解压
该课程设计可以实现对于英文文本进行字符串压缩解压处理,附带课程设计报告、源代码、运行结果等。
有完整的库文件代码和示例演示程序。可在内存中直接解压或压缩gzip字符串。
还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...
通过读取TXT文件,输出压缩后的TXZ文件,现实压缩率,提供解压缩;
还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...
压缩dll文件ICSharpCode.SharpZipLib.dll+压缩和解压字符串代码
使用以下代码进行压缩和解压 /// /// 利用ICSharpCode压缩 /// /// <param name="param"></param> /// <returns></returns> public static string IC_Compress(string param) { byte[] data = System....
字符串解压缩,使用见http://blog.csdn.net/qqmcy/article/details/25283837
本文实例讲述了C#自定义字符串压缩和解压缩的方法。分享给大家供大家参考。具体如下: class ZipLib { public static string Zip(string value) { //Transform string into byte[] byte[] byteArray = new byte...
JavaScript中针对字符串/ JSON / JS对象实现的无损LZW压缩/解压缩。 用法: 从npm安装lzwCompress: npm install lzwcompress 然后在您的node.js应用程序中使用它: import lzwCompress from 'lzwcompress'; ...
【免费题库】华为OD机试 - 一种字符串压缩表示的解压(Java & JS & Python & C & C++).html付费专栏内容,免费下载,多种语言解法
delphi环境下开发的针对gZip字符串解压锁,包含源代码和demo实例。
CompresszZipFile 中带是 zip解压 ZipFileUtil 是文件的压缩 和rar的解压