`
kinkding
  • 浏览: 150122 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

字符串压缩解压

    博客分类:
  • JAVA
阅读更多
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();
		}
	}

}
 
分享到:
评论
1 楼 greatwqs 2011-11-04  
很不错 html的cache 

相关推荐

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

    - 读取压缩字符串,每次取出一个编码,根据编码在字典中找到对应的子串,并添加到解压后的字符串中。 - 更新字典,将新生成的子串(当前解压字符串+下一个编码对应的子串的第一个字符)添加到字典。 - 重复此过程...

    字符串压缩与解压

    在IT领域,字符串压缩与解压是数据处理和存储中常见的技术。特别是在处理大量文本信息时,为了节省存储空间和提高传输效率,我们会对字符串进行压缩。本文将深入探讨C#语言中三种实现字符串压缩与解压的方法。 1. *...

    字符串的压缩和解压

    根据给定文件的信息,本文将围绕“字符串的压缩与解压”这一主题展开,深入探讨字符串压缩和解压的基本原理、实现方法以及应用场景等多方面内容。 ### 字符串压缩和解压概述 字符串的压缩与解压是计算机科学中的一...

    字符串的压缩与解压 java

    字符串的压缩和解压,java语言编写,zip实现,代码编写

    字符串压缩程序.rar

    在IT领域,字符串压缩是一种常见的数据压缩技术,用于减少存储空间和提高传输效率。这个名为“字符串压缩程序.rar”的压缩包包含了一个特定的程序代码,它利用了zip算法来实现字符串的压缩。对于初学者来说,这是一...

    字符串解压缩

    字符串压缩通常基于特定的算法,如霍夫曼编码、LZ77、LZ78、Run-Length Encoding (RLE) 或者Burrows-Wheeler Transform (BWT)。这些算法的目标是减少字符串的存储空间,通过识别和利用字符串中的重复模式或统计特性...

    Delphi解压gzip字符串例程

    以下是使用Delphi和ZLib库进行gzip字符串压缩和解压的详细步骤: 1. **压缩gzip字符串**: - 首先,你需要将`ZLib`库导入到Delphi项目中。这通常涉及到将`DelphiZLib.123`这样的库文件添加到你的项目路径中,并...

    【华为机考2017】字符串解压缩算法

    华为机考2017:字符串解压缩算法,通过率100%

    字符串压缩

    标题中的“字符串压缩”指的是在计算机科学中,对文本数据进行编码优化的技术,以减少存储空间的需求。在处理大量文本信息时,这种技术尤为重要,因为它可以显著降低存储和传输的成本。压缩通常涉及到查找数据中的...

    Python123之字符串压缩#134865

    在Python编程语言中,字符串压缩是一个常见的操作,特别是在处理大量文本数据时,为了节省存储空间,我们会使用压缩算法。本节我们将深入探讨Python中的字符串压缩技术,并以标题"Python123之字符串压缩#134865"为...

    string-yasuo.zip_字符串压缩

    在IT领域,字符串压缩是一种常见的数据处理技术,用于减少存储空间的需求,特别是在处理大量文本数据时。这个"string-yasuo.zip_字符串压缩"的压缩包文件似乎包含了一个专门用于字符串压缩的程序,旨在提高程序的...

    huffman压缩及解压(java版)

    6. **解压缩**:读取TXZ文件和编码表,按照哈夫曼编码还原字符,再写回TXT文件。 在Java实现过程中,可以将上述步骤封装成类,如`HuffmanEncoder`和`HuffmanDecoder`,分别处理压缩和解压缩任务。`src`目录可能包含...

    VC使用ZLIB压缩解压多级文件夹

    还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...

    一个DELPHI压缩字符串的例子如RTF格式

    为了解决这个问题,可以对RTF字符串进行压缩,以减少传输的数据量。 在DELPHI中,我们可以利用各种压缩库或算法来实现字符串的压缩。例如,ZLib库提供了一套完整的压缩和解压缩功能,包括常用的Deflate算法。以下是...

    VC使用ZLIB压缩解压文件和3级以上多级文件夹综合应用

    还增加了单个文件和内存中字符串压缩解压功能,一起补充到工程中,相对来说比较完整了,应用也很简单,包含头文件和LIB后直接可以调用函数了,LIB嵌入比DLL要方便的多。 这里特别感谢itloverwm和yangyou2009,我在...

    lzwCompress.js:在JavaScript中为字符串实现了无损LZW压缩解压JSONJS对象

    JavaScript中针对字符串/ JSON / JS对象实现的无损LZW压缩/解压缩。 用法: 从npm安装lzwCompress: npm install lzwcompress 然后在您的node.js应用程序中使用它: import lzwCompress from 'lzwcompress'; ...

    python字符串压缩.pdf

    在Python编程语言中,字符串压缩是一项重要的数据处理技术,它用于减少存储空间需求或在网络传输时减小数据量。Python提供了多种内置库和第三方库来实现字符串的压缩和解压缩功能。以下是关于Python字符串压缩的一些...

    C#自定义字符串压缩和解压缩的方法

    本文将介绍如何自定义一个简单的字符串压缩和解压缩的方法,使用.NET框架内置的`System.IO.Compression.GZipStream`类。 首先,让我们分析`ZipLib`类中的`Zip`方法。这个方法接收一个字符串`value`作为输入,其目的...

    C#中压缩字符串

    使用以下代码进行压缩和解压 /// /// 利用ICSharpCode压缩 /// /// &lt;param name="param"&gt;&lt;/param&gt; /// &lt;returns&gt;&lt;/returns&gt; public static string IC_Compress(string param) { byte[] data = System....

Global site tag (gtag.js) - Google Analytics