最近碰到了一个按GZIP解压指定的输入流数据,备份下

  1. import java.io.ByteArrayInputStream;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.util.zip.GZIPInputStream;
  5. import java.util.zip.GZIPOutputStream;
  6.  
  7. /**
  8. * 压缩,解压类
  9. */
  10. public class ZipUtils {
  11.  
  12. /**
  13. * 压缩指定的字符串
  14. *
  15. * @param str
  16. * @return
  17. * @throws IOException
  18. */
  19. public static byte[] compress(String str) throws IOException {
  20.  
  21. ByteArrayOutputStream out = new ByteArrayOutputStream();
  22. GZIPOutputStream gzip = new GZIPOutputStream(out);
  23. gzip.write(str.getBytes());
  24. gzip.close();
  25. return out.toByteArray();
  26. }
  27.  
  28. /**
  29. * 解压缩字节数组
  30. *
  31. * @param b
  32. * @return
  33. * @throws IOException
  34. */
  35. public static byte[] uncompress(byte[] b) throws IOException {
  36.  
  37. ByteArrayOutputStream out = new ByteArrayOutputStream();
  38. ByteArrayInputStream in = new ByteArrayInputStream(b);
  39. GZIPInputStream gunzip = new GZIPInputStream(in);
  40. byte[] buffer = new byte[256];
  41. int n;
  42. while ((n = gunzip.read(buffer)) >= 0) {
  43. out.write(buffer, 0, n);
  44. }
  45. return out.toByteArray();
  46. }
  47.  
  48. // 测试方法
  49. public static void main(String[] args) throws IOException {
  50.  
  51. }
  52.  
  53. }

注意事项

解压方法最后不要转成字符串  out.toString(); 否则解压的时候会出现  Not in GZIP format 错误

java GZIP压缩和解压的更多相关文章

  1. VB6进行GZIP解压&C#进行GZIP压缩和解压

    VB进行GZIP解压的,DLL是系统的,如果没有 [点击下载] Option Explicit 'GZIP API '----------------------------------------- ...

  2. 对数据进行GZIP压缩和解压

    public class GzipUtils { /** * 对字符串进行gzip压缩 * @param data * @return * @throws IOException */ public ...

  3. java 文件压缩和解压(ZipInputStream, ZipOutputStream)

    最近在看java se 的IO 部分 , 看到 java 的文件的压缩和解压比较有意思,主要用到了两个IO流-ZipInputStream, ZipOutputStream,不仅可以对文件进行压缩,还 ...

  4. Gzip压缩和解压

    /// <summary> /// 将传入字符串以GZip算法压缩后,返回Base64编码字符 /// </summary> /// <param name=" ...

  5. java文件压缩和解压

    功能实现. package com.test; import java.io.File; import java.io.BufferedOutputStream; import java.io.Buf ...

  6. C#对GZIP压缩和解压

    /// <summary> /// 将Gzip的byte数组读取为字符串 /// </summary> /// <param name="bytes" ...

  7. C#实现通过Gzip来对数据进行压缩和解压

    C#实现通过Gzip来对数据进行压缩和解压 internal static byte[] Compress(byte[] data) { using (var compressedStream = n ...

  8. 使用pako.js实现gzip的压缩和解压

    poko.js可至Github下载:https://github.com/nodeca/pako 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...

  9. java 压缩和解压zip包

    网上有关压缩和解压zip包的博文一大堆,我随便找了一个.看了看,依照自己的须要改动了一下,与各位分享一下,希望各位大神指正: package com.wangpeng.utill; import ja ...

随机推荐

  1. framework各版本对比

    本对比只是粗略的让大家了解到大概有什么变化 .net 1.0 2002年2月.net 2.0 2006年1月.net 3.0 2006年11月 .net 3.5 2007年11月.net 3.5 sp ...

  2. 修改mysql用户名密码 和 PHPmysqlAdmin对应密码修改

    本地的mysql运行时,可能会用到修改用户名密码: mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('输入新密码');不存在修改用户啊 ...

  3. Map/Reduce 工作机制分析 --- 错误处理机制

    前言 对于Hadoop集群来说,节点损坏是非常常见的现象. 而Hadoop一个很大的特点就是某个节点的损坏,不会影响到整个分布式任务的运行. 下面就来分析Hadoop平台是如何做到的. 硬件故障 硬件 ...

  4. Java笔记6-数组

    知识大纲一.数组的应用由于数组是用来存储数据的,所以,它的操作总是增.删除.改.查的操作.数组做为一种最基本的数据结构,它在查询上效率是最高的.但是在增加.删除的操作效率是最低的. 因为,数组的长度一 ...

  5. import tf

    不知道为什么,tensorflow要最后import,否则会对matplotlib的imread产生影响,产生IO错误,异常莫名其妙

  6. Codeforces Round #160 (Div. 2)

    A. Roma and Lucky Numbers 暴力计算. B. Roma and Changing Signs 每次取最小值改变正负,优先队列维护. C. Maxim and Discounts ...

  7. java Scanner

    public static void main(String[] args) throws IOException { System.out.print("Enter a number:&q ...

  8. mesos INSTALL

    $ git clone https://github.com/mesosphere/playa-mesos $ cd playa-mesos $ vagrant up --provision

  9. java-String基础篇

    一.String字符串理解 java字符串类,包含了字符串的值和实现字符串相关操作的一些方法 1.String字符串可分静态字符串和动态字符串 静态初始化字符串:String s1 = "h ...

  10. SVM之SMO最小序列

    转载自:JerryLead http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html 11 SMO优化算法(Sequential ...