String压缩 解压缩
数据传输时,有时需要将数据压缩和解压缩,本例使用GZIPOutputStream/GZIPInputStream实现。
1、使用ISO-8859-1作为中介编码,可以保证准确还原数据
2、字符编码确定时,可以在decompress方法最后一句中显式指定编码
package com.bcxin.business.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
/**
* @author suzhida
* String压缩/解压
*/
public class StringCompress {
/**
* 压缩字符串
*
* @param str
* 压缩的字符串
* @return 压缩后的字符串
*/
public static String compress(String str) {
if (StringUtil.isEmpty(str)) {
return str;
}
try {
ByteArrayOutputStream bos = null;
GZIPOutputStream os = null; // 使用默认缓冲区大小创建新的输出流
byte[] bs = null;
try {
bos = new ByteArrayOutputStream();
os = new GZIPOutputStream(bos);
os.write(str.getBytes()); // 写入输出流
os.close();
bos.close();
bs = bos.toByteArray();
return new String(bs, "ISO-8859-1"); // 通过解码字节将缓冲区内容转换为字符串
} finally {
bs = null;
bos = null;
os = null;
}
} catch (Exception ex) {
return str;
}
}
/**
* 解压缩字符串
*
* @param str
* 解压缩的字符串
* @return 解压后的字符串
*/
public static String decompress(String str) {
if (StringUtil.isEmpty(str)) {
return str;
}
ByteArrayInputStream bis = null;
ByteArrayOutputStream bos = null;
GZIPInputStream is = null;
byte[] buf = null;
try {
bis = new ByteArrayInputStream(str.getBytes("ISO-8859-1"));
bos = new ByteArrayOutputStream();
is = new GZIPInputStream(bis); // 使用默认缓冲区大小创建新的输入流
buf = new byte[1024];
int len = 0;
while ((len = is.read(buf)) != -1) { // 将未压缩数据读入字节数组
// 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此byte数组输出流
bos.write(buf, 0, len);
}
is.close();
bis.close();
bos.close();
return new String(bos.toByteArray()); // 通过解码字节将缓冲区内容转换为字符串
} catch (Exception ex) {
return str;
} finally {
bis = null;
bos = null;
is = null;
buf = null;
}
}
}
String压缩 解压缩的更多相关文章
- hadoop的压缩解压缩,reduce端join,map端join
hadoop的压缩解压缩 hadoop对于常见的几种压缩算法对于我们的mapreduce都是内置支持,不需要我们关心.经过map之后,数据会产生输出经过shuffle,这个时候的shuffle过程特别 ...
- 使用 apache ant 轻松实现文件压缩/解压缩(转)
原文地址:http://blog.csdn.net/irvine007/article/details/6779492 maven配置ant包: <dependency> <grou ...
- 基于ICSharpCode.SharpZipLib.Zip的压缩解压缩
原文:基于ICSharpCode.SharpZipLib.Zip的压缩解压缩 今天记压缩解压缩的使用,是基于开源项目ICSharpCode.SharpZipLib.Zip的使用. 一.压缩: /// ...
- 【13】MD5编码、Zlib压缩解压缩
1.MD5加密 /// <summary> /// 使用MD5加密算法 /// </summary> /// <param name="md5MessageSt ...
- Hadoop案例(二)压缩解压缩
压缩/解压缩案例 一. 对数据流的压缩和解压缩 CompressionCodec有两个方法可以用于轻松地压缩或解压缩数据.要想对正在被写入一个输出流的数据进行压缩,我们可以使用createOutput ...
- Linux下的压缩解压缩命令详解
linux zip命令zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o - ...
- Qt之QuaZIP(zip压缩/解压缩)
简述 QuaZIP是使用Qt/C++对ZLIB进行简单封装的用于压缩及解压缩ZIP的开源库.适用于多种平台,利用它可以很方便的将单个或多个文件打包为zip文件,且打包后的zip文件可以通过其它工具打开 ...
- Linux/centos/redhat下各种压缩解压缩方式详解
1.zip命令 zip -r myfile.zip ./* 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d ...
- ICSharpCode.SharpZipLib实现压缩解压缩
最近,在项目中经常需要处理压缩和解压缩文件的操作.经过查找,发现了ICSharpCode.SharpZipLib.dll ,这是一个完全由c#编写的Zip, GZip.Tar . BZip2 类库,可 ...
随机推荐
- vim的基本介绍
vim四种模式: 1.正常模式(Normal-mode) 当我们打开vim时就会进入到正常模式,这个时候是不能编辑的,一般用于浏览文件,包括复制,删除一些文本操作.我们可以通过键盘的上下左右来进行光标 ...
- spring基本原理
作者:王奕然链接:https://www.zhihu.com/question/21346206/answer/101789659来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注 ...
- 55. Jump Game(中等)
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- 继承自 DevExpress 17.2 的自定义控件如何在工具箱显示
最近把DevExpress版本从13.1升级到了17.2,结果发现继承自DevExpress的自定义控件居然在工具箱中消失了,弄了两天还是没有任何头绪,部分自定义Dev控件可以正常出现,但大部分自定义 ...
- ubuntu部署mipsel64交叉编译环境
最近找到个不错的交叉工具链,据传能够编译mipsel64的程序,决定试试. 首先当然是安装环境: apt install -y gcc libncursesada3-dev 下载,解压,进入 三部曲: ...
- leetcode刷题笔记326 3的幂
题目描述: 给出一个整数,写一个函数来确定这个数是不是3的一个幂. 后续挑战:你能不使用循环或者递归完成本题吗? 题目分析: 既然不使用循环或者递归,那我可要抖机灵了 如果某个数n为3的幂 ,则k=l ...
- Jmeter(十七)_驱动浏览器做GUI测试
jmeter不光可以完成性能测试.接口测试,现在也可以依靠WebDriver来完成GUI的功能自动化测试了,是不是很神奇? 1:下载JMeterPlugins-WebDriver-1.3.1.zip, ...
- Jmeter(二十)_Mock接口
首先解释一下什么是mock接口. Mock通常是指,在测试一个对象时,我们构造一些假的对象来模拟与其交互.而这些Mock对象的行为是我们事先设定且符合预期.通过这些Mock对象来测试对象在正常逻辑,异 ...
- 潜谈IT从业人员在传统IT和互联网之间的择业问题(上)-传统乙方形公司
外包能去吗?项目型公司如何?甲方比乙方好?互联网公司就一定好吗? 相信许多从业者在经历了3-5年的工作期后都会带着这样的疑问或者疑惑. 2012年-2014年间,曾经面试过500人,亲身面试的也有15 ...
- 有没有最好的学习Angularjs2的视频入门体验?
Which are the best video tutorials for learning AngularJS 2? 有没有最好的学习Angularjs2的视频入门体验? 翻译来源:https:/ ...