import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream; /**
* 字符串的压缩
* @param str 待压缩的字符串
* @return 返回压缩后的字符串
* @throws IOException
*/
public class GZIP {
/**
* 字符串的压缩
*
* @param str
* 待压缩的字符串
* @return 返回压缩后的字符串
* @throws IOException
*/
public static String compress(String str) throws IOException {
if (null == str || str.length() <= 0) {
return str;
}
// 创建一个新的 byte 数组输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 使用默认缓冲区大小创建新的输出流
GZIPOutputStream gzip = new GZIPOutputStream(out);
// 将 b.length 个字节写入此输出流
gzip.write(str.getBytes());
gzip.close();
// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
return out.toString("ISO-8859-1");
} /**
* 字符串的解压
*
* @param str
* 对字符串解压
* @return 返回解压缩后的字符串
* @throws IOException
*/
public static String unCompress(String str) throws IOException {
if (null == str || str.length() <= 0) {
return str;
}
// 创建一个新的 byte 数组输出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
// 创建一个 ByteArrayInputStream,使用 buf 作为其缓冲区数组
ByteArrayInputStream in = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
// 使用默认缓冲区大小创建新的输入流
GZIPInputStream gzip = new GZIPInputStream(in);
byte[] buffer = new byte[256];
int n = 0;
while ((n = gzip.read(buffer)) >= 0) {// 将未压缩数据读入字节数组
// 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此 byte数组输出流
out.write(buffer, 0, n);
}
// 使用指定的 charsetName,通过解码字节将缓冲区内容转换为字符串
return out.toString("UTF-8");
} public static void WriteStringToFile(String filePath, String str) {
try {
RandomAccessFile rf = new RandomAccessFile(filePath, "rw");
rf.writeBytes(str);
rf.close();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) throws IOException {
String str = "[{\"alias\":\"brownHorse\",\"level\":3,\"reward\":18,\"runSpeed\":1.0,\"speciesId\":1,\"uuid\":\"26CB848557CE4757B7D8D80C21730E55\"},{\"alias\":\"brownHorse\",\"level\":3,\"reward\":60,\"runSpeed\":1.0,\"speciesId\":1,\"uuid\":\"7529DAAC831E461D8AE68FBE71891BB7\"},{\"alias\":\"blackHorse\",\"level\":1,\"reward\":116,\"runSpeed\":2.0,\"speciesId\":2,\"uuid\":\"50AA595A6F3F424DA176478CC9A2FB81\"},{\"alias\":\"blackHorse\",\"level\":1,\"reward\":151,\"runSpeed\":2.0,\"speciesId\":2,\"uuid\":\"A8E54431AEAD48B4A5B5C9C5271BC741\"},{\"alias\":\"redHorse\",\"level\":1,\"reward\":286,\"runSpeed\":3.0,\"speciesId\":3,\"uuid\":\"CFA98753E51D45CFA0789C819CB5D51B\"},{\"alias\":\"redHorse\",\"level\":1,\"reward\":232,\"runSpeed\":3.0,\"speciesId\":3,\"uuid\":\"953C03AB07FF4495836DD4FDAE992E16\"}]";
String res = compress(str);
System.out.println(res);
System.out.println(res.length());
System.out.println(unCompress(res));
WriteStringToFile("d://a.txt", res);
}
}

java gzip压缩与解压的更多相关文章

  1. java zip 压缩与解压

    java zip 压缩与解压 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java. ...

  2. Linux命令学习(4):gzip压缩与解压

    版权声明:本文为博主原创文章,未经允许不得转载 引子 gzip是Linux系统中最常用也是高效的压缩压缩命令.早期Linux系统中主要使用compress命令压缩,得到后缀为“.Z”的压缩文件,但是后 ...

  3. android与服务端通讯时使用到的GZIP压缩及解压

    为了减小android项目与服务端进行通讯时的数据流量,我们可以使用GZIP对服务端传输的数据进行压缩,在android客户端解压.或在客户端压缩,在服务端解压.代码如下: android客户端的GZ ...

  4. golang tar gzip 压缩,解压(含目录文件)

    tar是用于文件归档,gzip用于压缩.仅仅用tar的话,达不到压缩的目的.我们常见的tar.gz就是用gzip压缩生成的tar归档文件. go实现tar压缩与解压与zip类似,区别在于tar需要使用 ...

  5. Java的压缩、解压及压缩加密、解密解压 样例

    为了节约带宽.加快传送速度,http协议支持gzip的压缩,但假设我们的app与后台不是通过http协议通讯的.那么压缩.解压这个流程须要自己写.以下给出compress和decompress的代码: ...

  6. GZIP压缩与解压

    public class GZIP { /** * 字符串的压缩 * * @param str * 待压缩的字符串 * @return 返回压缩后的字符串 * @throws IOException ...

  7. java文件压缩与解压

    感谢“zlex.dongliang@gmail.com”.主要代码如下: import java.io.BufferedInputStream; import java.io.File; import ...

  8. Java_压缩与解压工具类

    转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...

  9. linux中tar命令(打包、压缩、解压)、zip和unzip、rar多种压缩文件

    一.名词解释 打包:将一大堆文件或目录变成一个总的文件[tar命令] 压缩:将一个大的文件通过一些压缩算法变成一个小文件[gzip,bzip2等] Linux中很多压缩程序只能针对一个文件进行压缩,这 ...

随机推荐

  1. HDU 5118 GRE Words Once More!

    题目链接:HDU-5118 题意:给定一个有向无环图,每条边有一个权值.标定一些特定节点为“特殊节点”.从节点1出发到某“特殊节点”结束的路径,称为一个“GRE单词”.单词由路径上的权值组成.给定一组 ...

  2. 使用OC swift 截取路径中的最后的文件名

    使用 OC swift 截取路径中的最后的文件名 如何截取下面路径中最后的文件名 AppDelegate.swift /Users/XXX/Desktop/Swift/swift02/code/02- ...

  3. C++ 输入ctrl+z 不能再使用cin的问题

    问题介绍: 程序步骤是开始往容器里面写数据,以Ctrl+Z来终止输入流,然后需要输入一个数据,来判断容器中是否有这个数据. 源代码如下: #include<iostream> #inclu ...

  4. 使用 Visual Studio 部署 .NET Core 应用 ——.Net Core 部署到SUSE Linux Enterprise Server 12 SP2 64 位(GNOME 版本3.20.2)

    SUSE Linux安装 apache 命令:sudo zypper in apache 设置apache 服务可用 命令:sudo systemctl enable apache2.service启 ...

  5. 各种好用的代码生成器(C#)

    各种好用的代码生成器(C#) 1:CodeSmith 一款人气很旺国外的基于模板的dotnet代码生成器 官方网站:http://www.codesmithtools.com 官方论坛:http:// ...

  6. 调用git命令行执行更新的思路

    cd /usr/local/software/CloudPlatformUtil/GitLab # CentOS6.5自带的git版本是1.7.1 # 安装高版本git wget -O git.zip ...

  7. 是时候升级你的Js工具了-分页【基于JQ】

    好久没有来逛园子,也好久没有更新博客,就像沉睡已久的人忽然被叫醒,忽然就被园友的回复惊醒了.园友提出了关于我之前一篇文章的疑问——可那已经是半年以前的博客了,加上我一直觉得分享给大家的应该是我最新的思 ...

  8. Mybatis框架-2

    1.Mybatis中的接口形式 在Mybatis中使用接口形式将通过代理对象调用方法,从而实现sql的执行 1)定义一个接口 package mapper; import java.util.List ...

  9. 对PDO的认识

    1.PDO(PHP Data Object)扩展为PHP定义了一个访问数据库的轻量.持久的接口.实现PDO接口的每一种数据库驱动都能以正则扩展的形式把各自的特色表现出来. 主要:PDO扩展只是一个抽象 ...

  10. 洛谷P1392 取数 [堆]

    题目传送门 取数 题目描述 在一个n行m列的数阵中,你须在每一行取一个数(共n个数),并将它们相加得到一个和.对于给定的数阵,请你输出和前k小的取数方法. 输入输出格式 输入格式: 第一行,三个数n, ...