使用GZIP解压缩数据,以及解决中文乱码
2017-11-01 09:57
2056 查看
package com.io.test; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * 使用GZIPOutputStream压缩字符串和GZIPInputStream解压缩字符串 * 注意:压缩大数据有效果,如果数据量小的话,压缩后的数据,可能会变大 * */ public class CompressAndUnCpmpressTest { // public static String data = "askjkshf";//数据量很小,压缩后的数据会比压缩前大 //这个的数据量比较大,效果比较明显,并且数据量越大,效果越明显 public static String data = "哈哈askjkshfsahfsahshfnsafsahfsahfsnfskfhsalhfsanflsakhflsahflskaffklsjflskajfsahfkshfksahfskalhfsajhflsahfasddsdsfdsadfsaf"; public static void main(String[] args) throws Exception { //判断解压缩前后的数据是否相同 System.out.println(unCompress(compress(data)).equals(data)); } /** * 对字符串数据进行压缩 * @param data 元数据 * @return String */ private static String compress(String data) throws Exception{ if (null == data || "".equals(data) || data.length() == 0) { return data; } ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//带有缓存功能的字节输出流 GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream); System.out.println("压缩前的数据大小:" + data.getBytes().length); gzipOutputStream.write(data.getBytes()); gzipOutputStream.close(); String compressData = byteArrayOutputStream.toString("ISO-8859-1"); System.out.println("压缩后的数据大小:" + byteArrayOutputStream.toByteArray().length); byteArrayOutputStream.close(); //System.out.println("压缩后的数据:" + compressData); return compressData; } /** * 对压缩后的数据,进行解压缩 * @param data * @return String */ public static String unCompress(String data) throws Exception { String retStr = ""; if (null == data || "".equals(data) || data.length() == 0) { return data; } ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data.getBytes("ISO-8859-1")); GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream); byte [] b = new byte [256]; int length = -1; while (-1 != (length = gzipInputStream.read(b)) ) { byteArrayOutputStream.write(b, 0, length); } retStr = byteArrayOutputStream.toString("UTF-8"); byteArrayOutputStream.close(); byteArrayInputStream.close(); gzipInputStream.close(); System.out.println("解压缩后的数据为:" + retStr); return retStr; } }
相关文章推荐
- spring boot新手教程之使用FastJson解析JSON数据以及解决返回中文乱码问题
- 使用TDBXReader或TDataSet回传数据,中文乱码问题解决办法
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- java---javadoc---Eclipse中javadoc的使用以及中文乱码的解决
- Java后台使用get方式远程跨域请求,返回数据为中文乱码解决方法
- 解决使用FusionCharts以后从后台获取数据中文乱码的问题
- 不装oracle客户端使用plsql,以及中文乱码问号问题(也可以解决VC调用oracle 乱码问题)
- MySQL查询中使用Concat关键字来拼接中文字符乱码(不同的数据类型拼接)解决方式
- jpgraph的使用以及标题和图例中文乱码的源码解决方法
- 解决使用Sql/plus插入数据出现的中文乱码问题
- 在JSP中使用Cookie,以及操作中文的乱码解决方法
- WIN7 PLSQL Developer使用oracle12c登录提示NLS_LANG未定义以及查看中文乱码问题解决
- javascript json的使用(以及中文乱码的解决乱码)
- java如何发送邮件以及使用Velocity模板解决模板文件中文乱码的问题
- 使用mysql命令窗口查看中文数据乱码的解决办法
- 使用TDBXReader或TDataSet回传数据,中文乱码问题解决办法
- Spring MVC使用fastjson数据传到前台中文乱码解决
- zip解压中文乱码解决与使用ant实现zip解压缩
- Oracle客户端使用sqlldr导数据中文乱码问题解决方法
- Eclipse中javadoc的使用以及中文乱码的解决