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();
}
}
}
分享到:
相关推荐
- 读取压缩字符串,每次取出一个编码,根据编码在字典中找到对应的子串,并添加到解压后的字符串中。 - 更新字典,将新生成的子串(当前解压字符串+下一个编码对应的子串的第一个字符)添加到字典。 - 重复此过程...
在IT领域,字符串压缩与解压是数据处理和存储中常见的技术。特别是在处理大量文本信息时,为了节省存储空间和提高传输效率,我们会对字符串进行压缩。本文将深入探讨C#语言中三种实现字符串压缩与解压的方法。 1. *...
根据给定文件的信息,本文将围绕“字符串的压缩与解压”这一主题展开,深入探讨字符串压缩和解压的基本原理、实现方法以及应用场景等多方面内容。 ### 字符串压缩和解压概述 字符串的压缩与解压是计算机科学中的一...
字符串的压缩和解压,java语言编写,zip实现,代码编写
在IT领域,字符串压缩是一种常见的数据压缩技术,用于减少存储空间和提高传输效率。这个名为“字符串压缩程序.rar”的压缩包包含了一个特定的程序代码,它利用了zip算法来实现字符串的压缩。对于初学者来说,这是一...
字符串压缩通常基于特定的算法,如霍夫曼编码、LZ77、LZ78、Run-Length Encoding (RLE) 或者Burrows-Wheeler Transform (BWT)。这些算法的目标是减少字符串的存储空间,通过识别和利用字符串中的重复模式或统计特性...
以下是使用Delphi和ZLib库进行gzip字符串压缩和解压的详细步骤: 1. **压缩gzip字符串**: - 首先,你需要将`ZLib`库导入到Delphi项目中。这通常涉及到将`DelphiZLib.123`这样的库文件添加到你的项目路径中,并...
华为机考2017:字符串解压缩算法,通过率100%
标题中的“字符串压缩”指的是在计算机科学中,对文本数据进行编码优化的技术,以减少存储空间的需求。在处理大量文本信息时,这种技术尤为重要,因为它可以显著降低存储和传输的成本。压缩通常涉及到查找数据中的...
在Python编程语言中,字符串压缩是一个常见的操作,特别是在处理大量文本数据时,为了节省存储空间,我们会使用压缩算法。本节我们将深入探讨Python中的字符串压缩技术,并以标题"Python123之字符串压缩#134865"为...
在IT领域,字符串压缩是一种常见的数据处理技术,用于减少存储空间的需求,特别是在处理大量文本数据时。这个"string-yasuo.zip_字符串压缩"的压缩包文件似乎包含了一个专门用于字符串压缩的程序,旨在提高程序的...
6. **解压缩**:读取TXZ文件和编码表,按照哈夫曼编码还原字符,再写回TXT文件。 在Java实现过程中,可以将上述步骤封装成类,如`HuffmanEncoder`和`HuffmanDecoder`,分别处理压缩和解压缩任务。`src`目录可能包含...
还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...
为了解决这个问题,可以对RTF字符串进行压缩,以减少传输的数据量。 在DELPHI中,我们可以利用各种压缩库或算法来实现字符串的压缩。例如,ZLib库提供了一套完整的压缩和解压缩功能,包括常用的Deflate算法。以下是...
还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...
JavaScript中针对字符串/ JSON / JS对象实现的无损LZW压缩/解压缩。 用法: 从npm安装lzwCompress: npm install lzwcompress 然后在您的node.js应用程序中使用它: import lzwCompress from 'lzwcompress'; ...
在Python编程语言中,字符串压缩是一项重要的数据处理技术,它用于减少存储空间需求或在网络传输时减小数据量。Python提供了多种内置库和第三方库来实现字符串的压缩和解压缩功能。以下是关于Python字符串压缩的一些...
本文将介绍如何自定义一个简单的字符串压缩和解压缩的方法,使用.NET框架内置的`System.IO.Compression.GZipStream`类。 首先,让我们分析`ZipLib`类中的`Zip`方法。这个方法接收一个字符串`value`作为输入,其目的...
使用以下代码进行压缩和解压 /// /// 利用ICSharpCode压缩 /// /// <param name="param"></param> /// <returns></returns> public static string IC_Compress(string param) { byte[] data = System....