java中GZIP压缩解压类使用实例

java中GZIP压缩解压类使用实例

当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩。

实例代码:

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

/**
 * GZIP压缩解压类
 */
public class MessageGZIP { 

  private static String encode = "utf-8";//"ISO-8859-1" 

  public String getEncode() {
    return encode;
  } 

  /*
   * 设置 编码,默认编码:UTF-8
   */
  public void setEncode(String encode) {
    MessageGZIP.encode = encode;
  } 

  /*
   * 字符串压缩为字节数组
   */
  public static byte[] compressToByte(String str){
    if (str == null || str.length() == 0) {
      return null;
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    GZIPOutputStream gzip;
    try {
      gzip = new GZIPOutputStream(out);
      gzip.write(str.getBytes(encode));
      gzip.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return out.toByteArray();
  } 

  /*
   * 字符串压缩为字节数组
   */
  public static byte[] compressToByte(String str,String encoding){
    if (str == null || str.length() == 0) {
      return null;
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    GZIPOutputStream gzip;
    try {
      gzip = new GZIPOutputStream(out);
      gzip.write(str.getBytes(encoding));
      gzip.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return out.toByteArray();
  } 

  /*
   * 字节数组解压缩后返回字符串
   */
  public static String uncompressToString(byte[] b) {
    if (b == null || b.length == 0) {
      return null;
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ByteArrayInputStream in = new ByteArrayInputStream(b); 

    try {
      GZIPInputStream gunzip = new GZIPInputStream(in);
      byte[] buffer = new byte[256];
      int n;
      while ((n = gunzip.read(buffer)) >= 0) {
        out.write(buffer, 0, n);
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
    return out.toString();
  } 

  /*
   * 字节数组解压缩后返回字符串
   */
  public static String uncompressToString(byte[] b, String encoding) {
    if (b == null || b.length == 0) {
      return null;
    }
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    ByteArrayInputStream in = new ByteArrayInputStream(b); 

    try {
      GZIPInputStream gunzip = new GZIPInputStream(in);
      byte[] buffer = new byte[256];
      int n;
      while ((n = gunzip.read(buffer)) >= 0) {
        out.write(buffer, 0, n);
      }
      return out.toString(encoding);
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
  }
}

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Java 文件解压缩实现代码

    Java实现压缩文件的解压缩操作,缺点是压缩文件内不能含有文件名为中文的的文件,否则会出现如下错误: 复制代码 代码如下: Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(Unknown Source) at java.util.zip.ZipInputStream.readLOC(Unknown Source) at

  • java调用7zip解压压缩包的实例

    前言 最近的项目中需要用到解压缩包的功能,客户给出的压缩包的格式主要是rar和zip,因此就打算使用java调用7zip的命令行进行解压文件,本文主要记录一下实现的过程以及其中遇到的问题. 7zip命令行 7z <command> [<switches>...] <archive_name> [<file_names>...][<@listfiles...>] 7z的commands中包含添加文件到压缩包.从压缩包中删除文件以及提取文件等等多个命

  • 实例展示使用Java压缩和解压缩7z文件的方法

    压缩为7z文件 首先网络上对7z的压缩内容很少. 尤其是java调用进行压缩的是更少了. 一下是自己完成的一个压缩. 本人进行了测试是成功的. 将压缩的流写如磁盘一个压缩文件中. 然后使用7z的压缩软件进行打开解压. 7-zip的开源项目7-zip-JBinding项目地址(sourceforge) 不多说,调用7z源码进行压缩的方法如下. public byte[] lzmaZip(String xml) throws IOException{ BufferedInputStream inSt

  • Java压缩/解压文件的实现代码

    用java压缩/解压文件: import java.io.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.zip.*; import javax.swing.*; //从压缩包中提取文件 public class ZipExtractDemo extends JFrame{ JFileChooser fileChooser; //文件选择器 JTextField jtfTarg

  • java 解压与压缩文件夹的实例详解

     java 解压与压缩文件夹的实例详解 注意:JDK7支持设置编码设置编码格式 zipFile,zipInputStream,zipOutputStream都增加了编码格式,如果是jdk1.6需要其他的包辅助 下面为自带jdk压缩文件夹代码: public void dozip(String srcfile, String zipfile) throws IOException { String temp = ""; File src = new File(srcfile); File

  • Java压缩解压zip技术_动力节点Java学院整理

    Java解压缩zip - 多个文件(包括文件夹),对多个文件和文件夹进行压缩,对复杂的文件目录进行解压.压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构: 测试的压缩内容:English文件夹和同级的两个excel文件 File[] files

  • java使用gzip实现文件解压缩示例

    复制代码 代码如下: package com.cjonline.foundation.cpe.action; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.

  • Java解压缩zip - 解压缩多个文件或文件夹实例

    Java解压缩zip - 多个文件(包括文件夹),具体如下: 对多个文件和文件夹进行压缩,对复杂的文件目录进行解压. 压缩方法使用的是可变参数,可以压缩1到多个文件..可以写数组的方式或者一个个写到参数列表里面... ZipFiles(zip,"abc",new File("d:/English"),new File("d:/发放数据.xls")); 测试文件目录结构: 测试的压缩内容:English文件夹和同级的两个excel文件 File[]

  • java中GZIP压缩解压类使用实例

    java中GZIP压缩解压类使用实例 当我们客户端与服务端进行数据传输时需要走流量,为了节省流量我们常常需要写一个压缩类对数据进行压缩. 实例代码: import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStr

  • ASP.NET 文件压缩解压类(C#)

    本文实例讲述了asp.net C#实现解压缩文件的方法,需要引用一个ICSharpCode.SharpZipLib.dll,供大家参考,具体如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using ICSharpCode.SharpZipLib.Zip; using System.IO; using ICSharpCode.SharpZipLib.Checksum

  • C#中关于zip压缩解压帮助类的封装 附源码下载

    c#下压缩解压,主要是用第三方类库进行封装的.ICSharpCode.SharpZipLib.dll类库,链接地址为你官方下载链接.压缩主要是用流的方式进行压缩的. 压缩文件及文件夹.文件压缩很简单,把待压缩的文件用流的方式读到内存中,然后放到压缩流中.就可以了.文件夹就稍微麻烦下了.因为要把待压缩的文件夹解压后保留文件夹文件的层次结构.所以我的实现方式就是 递归遍历文件夹中的文件.计算其相对位置放到压缩流中. 代码如下 复制代码 代码如下: /// <summary>        ///

  • java 中 String format 和Math类实例详解

    java 中 String format 和Math类实例详解 java字符串格式化输出 @Test public void test() { // TODO Auto-generated method stub //可用printf(); System.out.println(String.format("I am %s", "jj")); //%s字符串 System.out.println(String.format("首字母是 %c",

  • java实现文件夹解压和压缩

    本文实例为大家分享了java实现文件夹解压和压缩的具体代码,供大家参考,具体内容如下 效果 实现多个文件以及文件夹的压缩和解压 代码分析 import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry

  • Java使用GZIP压缩导致HTTP请求返回乱码问题解决

    目录 原因 思路 解决方法 代码 关键部分 完整代码 原因 用Java调用雪球的API,结果返回的是乱码,一番研究后发现是因为返回的数据使用了GZIP压缩,需要先解压才能得到正确数据. 思路 使用了GZIP压缩的数据在响应头里会有一项名为content-encoding的参数,值为gzip. Java中可以使用.getHeaderField()读取响应头的参数. 如果没有这项参数,会返回null. 解决方法 用.getHeaderField("content-encoding")读取c

  • 用.NET 2.0压缩/解压功能处理大型数据

    摘要 如果你的应用程序从未使用过压缩,那么你很幸运.而对于另一部分使用压缩的开发人员来说,好消息是,.NET 2.0如今提供了两个类来处理压缩和解压问题.本文正是想讨论何时以及如何使用这些有用的工具. 引言 .NET框架2.0中的一个新名称空间是System.IO.Compression.这个新名称空间提供了两个数据压缩类:DeflateStream和GZipStream.这两个压缩类都支持无损压缩和解压,其设计目的是为了处理流式数据的压缩和解压问题. 压缩是减少数据大小的有效办法.例如,如果你

  • C#使用SharpZipLib压缩解压文件

    一.介绍 SharpZipLib是一个完全由C#编写的ZIP,GZIP,Tar和BZIP2 Library,可以方便的支持这几种格式的压缩和解压缩. https://github.com/icsharpcode/SharpZipLib 下载解压SharpZipLib ,将 ICSharpCode.SharpZipLib .dll 添加至项目引用中. 二.操作指南 1.1  创建zip文件,并添加文件: using (ZipFile zip = ZipFile.Create(@"E:\test.z

随机推荐