将数据按照gzip当时解压的工具类

import java.io.ByteArrayInputStream;

import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.IOException;

import java.io.InputStream;

import java.io.RandomAccessFile;

import java.nio.ByteBuffer;

import java.nio.channels.FileChannel;

import java.util.zip.GZIPInputStream;

import java.util.zip.GZIPOutputStream;

import java.util.zip.ZipEntry;

import java.util.zip.ZipFile;

/**

* @author tanml

* 将一串数据按照gzip方式压缩和解压缩

*/

public class GZipUtils {

// 压缩

public static byte[] compress(byte[] data) throws IOException {

if (data == null || data.length == 0) {

return null;

}

ByteArrayOutputStream out = new ByteArrayOutputStream();

GZIPOutputStream gzip = new GZIPOutputStream(out);

gzip.write(data);

gzip.close();

return  out.toByteArray();//out.toString("ISO-8859-1");

}

public static byte[] compress(String str) throws IOException {

if (str == null || str.length() == 0) {

return null;

}

return compress(str.getBytes("utf-8"));

}

// 解压缩

public static byte[] uncompress(byte[] data) throws IOException {

if (data == null || data.length == 0) {

return data;

}

ByteArrayOutputStream out = new ByteArrayOutputStream();

ByteArrayInputStream in = new ByteArrayInputStream(data);

GZIPInputStream gunzip = new GZIPInputStream(in);

byte[] buffer = new byte[256];

int n;

while ((n = gunzip.read(buffer)) >= 0) {

out.write(buffer, 0, n);

}

gunzip.close();

in.close();

return out.toByteArray();

}

public static String uncompress(String str) throws IOException {

if (str == null || str.length() == 0) {

return str;

}

byte[] data = uncompress(str.getBytes("utf-8")); // ISO-8859-1

return new String(data);

}

/**

* @Title: unZip

* @Description: TODO(这里用一句话描述这个方法的作用)

* @param @param unZipfile

* @param @param destFile 指定读取文件,需要从压缩文件中读取文件内容的文件名

* @param @return 设定文件

* @return String 返回类型

* @throws

*/

public static String unZip(String unZipfile, String destFile) {// unZipfileName需要解压的zip文件名

InputStream inputStream;

String inData = null;

try {

// 生成一个zip的文件

File f = new File(unZipfile);

ZipFile zipFile = new ZipFile(f);

// 遍历zipFile中所有的实体,并把他们解压出来

ZipEntry entry = zipFile.getEntry(destFile);

if (!entry.isDirectory()) {

// 获取出该压缩实体的输入流

inputStream = zipFile.getInputStream(entry);

ByteArrayOutputStream out = new ByteArrayOutputStream();

byte[] bys = new byte[4096];

for (int p = -1; (p = inputStream.read(bys)) != -1;) {

out.write(bys, 0, p);

}

inData = out.toString();

out.close();

inputStream.close();

}

zipFile.close();

} catch (IOException ioe) {

ioe.printStackTrace();

}

return inData;

}

public static void main(String[] args){

String json = "{\"androidSdk\":22,\"androidVer\":\"5.1\",\"cpTime\":1612071603,\"cupABIs\":[\"armeabi-v7a\",\"armeabi\"],\"customId\":\"QT99999\",\"elfFlag\":false,\"id\":\"4a1b644858d83a98\",\"imsi\":\"460015984967892\",\"system\":true,\"systemUser\":true,\"test\":true,\"model\":\"Micromax R610\",\"netType\":0,\"oldVersion\":\"0\",\"pkg\":\"com.adups.fota.sysoper\",\"poll_time\":30,\"time\":1481634113876,\"timeZone\":\"Asia\\/Shanghai\",\"versions\":[{\"type\":\"gatherApks\",\"version\":1},{\"type\":\"kernel\",\"version\":9},{\"type\":\"shell\",\"version\":10},{\"type\":\"silent\",\"version\":4},{\"type\":\"jarUpdate\",\"version\":1},{\"type\":\"serverIps\",\"version\":1}]}";

json="ksjdflkjsdflskjdflsdfkjsdf";

try {

byte[] buf = GZipUtils.compress(json);

File fin = new File("D:/temp/test4.txt");

FileChannel fcout = new RandomAccessFile(fin, "rws").getChannel();

ByteBuffer wBuffer = ByteBuffer.allocateDirect(buf.length);

fcout.write(wBuffer.wrap(buf), fcout.size());

if (fcout != null) {

fcout.close();

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

时间: 2024-12-14 18:18:17

将数据按照gzip当时解压的工具类的相关文章

linux下,gzip的解压与压缩

部分http响应报文采取gzip格式压缩,需要解压后数据才有效. http://www.zlib.net/ 提供了解压gzip的库函数 例子非常详细,http://www.zlib.net/zlib_how.html 系统版本:Ubuntu 14.04 安装库:apg-get install zlib1g-dev 编译时制定:gcc XXX -lz 添加头文件:#include <zlib.h> 特别需要注意: example中的 ret = inflateInit(&strm); 是

压缩解压打包工具基础

目录 前言 compress压缩解压工具 gzip压缩解压工具 bzip2压缩解压工具 xz压缩解压工具 zip压缩打包工具 tar打包工具 split文件分割 cpio打包压缩 前言 无论是我们的个人笔记本台式机还是服务器,它们的存储设备可以存储的东西都是有限的,不可能无限的存储东西,除非我们不停地增加硬盘的数量,但是这又是非常不现实的,因为我们需要无限的空间,很多时候我们需要存储大量的不可删除的数据时,就会采用压缩的方式,这样我们就可以即剩下了很多空间同时又保存了我们的文件. 在我们的常用的

各种Notification详解,含工具类

                                                                 昨天一天只写了两篇文章,效率超低.追其原因呢,其实我一直在研究notification的实现方式,今天研究完了给大家分享一下.本来想写个工具类来封装一下代码的,但是我发现notification的个性化元素太多了,做成一个方法的话参数又多的要死,于是我就将比较常见的方法做了封装,写了个不是很规整的工具类,至于内部的逻辑啊,点击跳转的事件啊,大家下载demo后看看代码应

【毕业设计日记-4月】gzip格式解压

之前很困惑的一个问题,这两天也倒腾出来了,就是wireshark分析出来的这个 ↑  ①Frame   ↑②De-chunked entity body  ↑③Uncompressed entity body 这三部分的关系是啥? 网上也找不到,还是请教了师兄师姐,才知道①是报文的所有内容,②是①中HTTP报文后面压缩的内容,③就是这部分压缩内容解压后的内容,也就是msgContent等等等这些需要的内容,所以我现在要做的就是截获报文之后对这部分内容进行解压(然后再提取msgContent的内容

对数据进行GZIP压缩和解压

public class GzipUtils { /** * 对字符串进行gzip压缩 * @param data * @return * @throws IOException */ public static String compress(String data) throws IOException { if (null == data || data.length() <= 0) { return data; } //创建一个新的byte数组输出流 ByteArrayOutputStr

关 于 解 压 缩 的 类 习 题

1. gzip, bzip2 能否直接压缩目录呢? 2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令. 3. tar 在打包的时候,如果想排除多个文件或者目录如何操作? 4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf  1.tar.gz  1.txt 2.txt ? 5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包? 6. 找一个大点的文件,使用tar 分别把这个文件打成 .tar.gz和.tar.bz2 压缩包,比较一下

linux 压缩解压打包工具大集合

压缩.解压缩及归档工具有很多,今天小编就整理几个大家较为常用的. compress gzip  bzip2 xz zip tar cpio 一.压缩.解压工具 用法 压缩 工具 压缩后 压缩包格式 解压缩 (默认不保留源文件) 保留原文件压缩 -c :将压缩结果打印到屏幕上 保留压缩文件解压 *zcat :将解压结果打印到屏幕上 强制压缩(默认不压缩硬链接) 显示详细过程 压缩比 -#(数字越大,压缩比越高,速度越慢 文件越小) compress (压缩比最小,文件最大) .Z -d uncom

PHP压缩与解压Zip(PHPZip类)

<?php     class PHPZip     {         private $ctrl_dir     = array();         private $datasec      = array();         /**********************************************************          * 压缩部分          **********************************************

【转】Java压缩和解压文件工具类ZipUtil

特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/ 1 package com.utility.zip; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import jav