`
z303729470
  • 浏览: 134137 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

字符串的压缩和解压缩

    博客分类:
  • JAVA
 
阅读更多
最近在做android开发,socket要传报文信息,报文信息是有json格式,数据的重复度很高所以就找了一个压缩字符串的方法,数据越大压缩越明显。


数据传输时,有时需要将数据压缩和解压缩,本例使用GZIPOutputStream/GZIPInputStream实现。

1、使用ISO-8859-1作为中介编码,可以保证准确还原数据
2、字符编码确定时,可以在uncompress方法最后一句中显式指定编码
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;


public class ZipUtil {
	// 压缩
	  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 uncompress(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);
	    }
	    // toString()使用平台默认编码,也可以显式的指定如toString("GBK")
	    return out.toString();
	  }

	  // 测试方法
	  public static void main(String[] args) throws IOException {
		String temp = "l;jsafljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看safljsdoeiuoksjdfpwrp3oiruewoifrjewflk我的得到喀喀喀 看看看看看看看看  ";
		System.out.println("原字符串="+temp);
		System.out.println("原长="+temp.length());
		String temp1 = ZipUtil.compress(temp);
		System.out.println("压缩后的字符串="+temp1);
		System.out.println("压缩后的长="+temp1.length());
	    System.out.println("解压后的字符串="+ZipUtil.uncompress(temp1));
	  }

}


转自:http://www.blogjava.net/fastunit/archive/2008/04/25/195932.html
分享到:
评论

相关推荐

    数据库课程设计—对带有大量重复单词的英文文本文件进行字符串压缩和解压缩处理

    这个设计项目的核心目标就是针对这样的文本文件进行有效的字符串压缩和解压缩操作,以节省存储空间并提高数据处理效率。在这个过程中,我们可以学习和应用多种计算机科学和信息技术中的关键概念。 首先,字符串压缩...

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

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

    字符串压缩

    文件名`zlib.rb`可能包含一个使用Ruby的`zlib`库进行字符串压缩和解压缩的示例代码。`zlib`库提供了对DEFLATE压缩算法的封装,它广泛应用于GZIP和ZIP文件格式。以下是使用`zlib`库进行压缩和解压缩的基本操作: ```...

    delphi字符串压缩

    在IT行业中,字符串压缩是一种常见的优化技术,尤其是在Delphi编程环境下。Delphi是Pascal语言的一个强大版本,它提供了一套完整的开发工具,用于创建高效、高性能的应用程序。字符串压缩的目的是减小数据的存储空间...

    字符串压缩与解压

    以下是如何使用SharpCompress进行字符串压缩和解压缩的示例: ```csharp using SharpCompress.Writer.GZip; using SharpCompress.Reader.GZip; public static string CompressWithSharpCompress(string text) ...

    字符串压缩解压缩.rar

    总之,ZLIB库是字符串压缩和解压缩的一个强大工具,其背后的DEFLATE算法结合了两种高效的方法,既能有效压缩数据,又易于实现。在处理大量文本数据时,合理利用ZLIB库可以显著改善系统性能,降低存储成本。了解和...

    quicklz cocos2dx 压缩 字符串压缩

    QuickLZ是一款高效的开源压缩库,它在Cocos2d-x框架中被广泛用于字符串压缩。Cocos2d-x是一个跨平台的2D游戏开发框架,支持多种操作系统,包括iOS、Android、Windows等。字符串压缩在游戏开发中非常重要,因为它可以...

    C#中ICSharpCode.SharpZipLib字符串压缩

    对于字符串压缩,SharpZipLib提供了`GZipStream`和`DeflaterStream`类,分别用于GZip和ZIP格式的压缩。这里我们以GZip为例,演示如何压缩和解压缩字符串: ```csharp public static string CompressString(string ...

    Python123之字符串压缩#134865

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

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

    此外,如果需要在不同平台或语言之间进行数据交换,你可能还需要考虑编码问题,确保字符串在压缩和解压缩过程中保持一致的编码格式。 总的来说,DELPHI提供的工具和库使得我们能够方便地对RTF字符串进行压缩,以...

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

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

    压缩和解压缩字符串

    在Java编程语言中,压缩和解压缩字符串是常见的数据处理任务,主要应用于减少存储空间或在网络上传输数据时减小带宽需求。本篇将详细探讨两种主要的方法:Inflater和Deflater,它们分别用于解压缩和压缩字符串。 ...

    Delphi解压gzip字符串例程

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

    pako gzip 压缩和解压缩(支持中文).rar

    pako是一个高性能的JavaScript库,它实现了多种压缩和解压缩算法,包括gzip。本项目着重介绍了如何使用pako库处理gzip压缩和解压缩,并且解决了中文字符在处理过程中的乱码问题。 gzip是一种广泛使用的数据压缩格式...

    python字符串压缩.pdf

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

    MIPS-simulator:使用8位字典对二进制字符串进行压缩和解压缩

    - 二进制字符串压缩和解压缩的算法实现 - 测试用例和输入数据 - 编译和运行脚本 如果你想要深入学习这个项目,你可以下载MIPS-simulator-master压缩包,查阅源代码,理解其工作原理,并尝试修改和优化压缩算法,以...

Global site tag (gtag.js) - Google Analytics