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

JAVA字符串压缩解压缩方法

阅读更多
package com.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

// 将一个字符串按照zip方式压缩和解压缩
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 str="%5B%7B%22lastUpdateTime%22%3A%222011-10-28+9%3A39%3A41%22%2C%22smsList%22%3A%5B%7B%22liveState%22%3A%221";
	  
	  System.out.println("原长度:"+str.length());  
	  
	  System.out.println("压缩后:"+ZipUtil.compress(str).length());  
	  
    System.out.println("解压缩:"+ZipUtil.uncompress(ZipUtil.compress(str)));
  }

}



原长度:104
压缩后:95
分享到:
评论
1 楼 潘清山 2013-08-01  
试试中文, 越压越大

相关推荐

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

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

    java算法,实现压缩及解压缩

    Java实现压缩与解压缩ZIP  import java.io.BufferedInputStream;  import java.io.BufferedOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;...

    C#、java 字符流跨平台数据解压缩

    由于项目需求,需要在C#中压缩,然后在java里解压缩,或者倒过来,在Java里压缩,C#里解压缩,以下代码经测试验证通过。 关键技术点和体会: 压缩的结果采用Base64编码,方便在Java端或者C#端打印出来调试,也方便...

    压缩和解压缩字符串

    两种方法 对字符串进行压缩和解压缩,inflater和deflater。

    文件解压和压缩 解决中文乱码

    CompresszZipFile 中带是 zip解压 ZipFileUtil 是文件的压缩 和rar的解压

    java实现霍夫曼(huffman)树的压缩和解压缩

    java实现霍夫曼(huffman)树的压缩和解压缩,支持对文档的压缩和解压缩

    哈夫曼编码实现压缩解压缩java

    使用哈夫曼编码实现对文本文件的压缩和解压缩

    字符串-Java解题分析-学习资料.zip

    字符串-Java解题分析-学习资料.zip 是一...无论是初学者还是有一定经验的开发者,都可以从中获取有关Java字符串处理的实用知识和技能。 场景目标: 技能提升:帮助开发者提升解决字符串相关问题的能力,提高编程水平。

    huffman压缩及解压(java版)

    通过读取TXT文件,输出压缩后的TXZ文件,现实压缩率,提供解压缩;

    java zip解压中文乱码问题

    下载后请从ZipUtil.java的main方法开始,一目了然. public static void main(String args[]) { new ZipUtil().unZip("E:\\aaaa\\中文.zip","E:\\aaaa\\中文","GBK"); } 实例: 将E:\\aaaa\\中文.zip解压到E:\\aaaa\...

    java自带Deflater压缩

    Java sdk自带的压缩、解压缩的方式,极大的省了字符串的空间;

    lz4-java:用于Java的LZ4压缩

    LZ4 Java 基于Yann Collet的工作,可从获得Java的LZ4压缩。... 这两种压缩算法产生的流使用相同的压缩格式,解压缩速度非常快,并且可以通过相同的解压缩器实例进行解压缩。 实作 对于LZ4压缩机,

    string-unpacker:Java上的字符串解包器

    拆线机Java上的字符串解包器任务:用Java编写一个用于解压缩字符串的程序。 输入是数字[string]形式的字符串,输出是包含重复子字符串的字符串。 示例:输入-3 [xyz] 4 [xy] z; 输出-xyzxyzxyzxyxyxyxyz 主要功能-...

    Java压缩技术整理

    输入结果 Consloe代码 1. 输入字符串: snowolf@zlex....4. 解压缩后字节长度: 59 5. 输出字符串: snowolf@zlex.org;dongliang@zlex.org;zlex.dongliang@zlex.org ZLib压缩对大字节数据压缩,才能反映出压缩效果。

    java中重写ZipCOM方法

    将SOAP传输数据进行加密和压缩,接收方再进行解压缩、分析进行持久化操作

    CSDN.rar_简繁体_股票 java

    利用Java实现zip压缩/解压缩 Java语言的Socket编程 利用Java实现串口全双工通讯 Java语言中字符的处理 区分引用类型和原始类型 Java中的两个特殊变量this和super Java中利用散列表实现股票行情的查询 Java中文...

    JAVA上百实例源码以及开源项目

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    JAVA上百实例源码以及开源项目源代码

     设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节  通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...

    lzstring4j:基于LZ的Java压缩算法

    通过这篇通过UTF-16压缩方法(Java Server-> Web上的JS或Node.js服务器上的-> Java Client / Android)与JavaScript库进行互操作。 如何使用 使用lzstring4j非常简单。 但让我们看看: 签出并编译项目: git clone...

    leetcode答案-Java-Portfolio:这些是一些具有挑战性的Java程序,非常棒!

    实现一种使用重复字符计数执行基本字符串压缩的方法。 例如,字符串 aabcccccaaa 将变为 a2blc5a3。 如果“压缩”字符串不会变得小于原始字符串,则您的方法应返回原始字符串。 假设您有一个方法 isSubstring 来检查...

Global site tag (gtag.js) - Google Analytics