import java.util.zip.*;<o:p></o:p>
import java.io.*;<o:p></o:p>
public <st1:rtx>cl</st1:rtx>ass testGzip {<o:p></o:p>
/**<o:p></o:p>
* 将对象转换成字节数组<o:p></o:p>
* @param obje<st1:rtx>ct</st1:rtx><o:p></o:p>
* @return<o:p></o:p>
* @throws IOException<o:p></o:p>
*/<o:p></o:p>
public static byte[] toBytes(Serializable obje<st1:rtx>ct</st1:rtx>) throws Exception {<o:p></o:p>
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>OutputStream obje<st1:rtx>ct</st1:rtx>Stream = new Obje<st1:rtx>ct</st1:rtx>OutputStream(byteStream);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.writeObje<st1:rtx>ct</st1:rtx>(obje<st1:rtx>ct</st1:rtx>);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.flush();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
return byteStream.toByteArray();<o:p></o:p>
}<o:p></o:p>
/**<o:p></o:p>
* 将字节数组转换成对象<o:p></o:p>
* @param bytes<o:p></o:p>
* @return<o:p></o:p>
*/<o:p></o:p>
public static Obje<st1:rtx>ct</st1:rtx> toObje<st1:rtx>ct</st1:rtx>(byte[] bytes) throws Exception {<o:p></o:p>
ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>InputStream obje<st1:rtx>ct</st1:rtx>Stream = new Obje<st1:rtx>ct</st1:rtx>InputStream(byteStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx> obje<st1:rtx>ct</st1:rtx> = obje<st1:rtx>ct</st1:rtx>Stream.readObje<st1:rtx>ct</st1:rtx>();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
return obje<st1:rtx>ct</st1:rtx>;<o:p></o:p>
}<o:p></o:p>
/**<o:p></o:p>
* 通过GZIP算法压缩将对象转换成字节数组<o:p></o:p>
* @param obje<st1:rtx>ct</st1:rtx><o:p></o:p>
* @return<o:p></o:p>
* @throws java.lang.Exception<o:p></o:p>
*<o:p></o:p>
* The ZIP format, which is record-based, is not rea<st1:rtx>ll</st1:rtx>y suitable for this job.<o:p></o:p>
* The GZIP is more appropriate as it operates on a single stream of data.<o:p></o:p>
*/<o:p></o:p>
public static byte[] toByteByGZIP(Serializable obje<st1:rtx>ct</st1:rtx>) throws Exception {<o:p></o:p>
ByteArrayOutputStream byteStream = new ByteArrayOutputStream();<o:p></o:p>
GZIPOutputStream gzipStream = new GZIPOutputStream(byteStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>OutputStream obje<st1:rtx>ct</st1:rtx>Stream = new Obje<st1:rtx>ct</st1:rtx>OutputStream(gzipStream);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.writeObje<st1:rtx>ct</st1:rtx>(obje<st1:rtx>ct</st1:rtx>);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.flush();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
gzipStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
return byteStream.toByteArray();<o:p></o:p>
}<o:p></o:p>
/**<o:p></o:p>
* 通过GZIP算法压缩将字节数组转换成对象<o:p></o:p>
* @param bytes<o:p></o:p>
* @return<o:p></o:p>
* @throws java.lang.Exception<o:p></o:p>
*<o:p></o:p>
* The ZIP format, which is record-based, is not rea<st1:rtx>ll</st1:rtx>y suitable for this job.<o:p></o:p>
* The GZIP is more appropriate as it operates on a single stream of data.<o:p></o:p>
*/<o:p></o:p>
public static Obje<st1:rtx>ct</st1:rtx> toObje<st1:rtx>ct</st1:rtx>ByGZIP(byte[] bytes) throws Exception {<o:p></o:p>
ByteArrayInputStream byteStream = new ByteArrayInputStream(bytes);<o:p></o:p>
GZIPInputStream gzipStream = new GZIPInputStream(byteStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>InputStream obje<st1:rtx>ct</st1:rtx>Stream = new Obje<st1:rtx>ct</st1:rtx>InputStream(gzipStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx> obje<st1:rtx>ct</st1:rtx> = obje<st1:rtx>ct</st1:rtx>Stream.readObje<st1:rtx>ct</st1:rtx>();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Stream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
gzipStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
return obje<st1:rtx>ct</st1:rtx>;<o:p></o:p>
}<o:p></o:p>
/**<o:p></o:p>
* 保存对象到文件中,通过GZIP算法压缩<o:p></o:p>
* @param fileName<o:p></o:p>
* @param obje<st1:rtx>ct</st1:rtx><o:p></o:p>
* @throws java.lang.Exception<o:p></o:p>
*/<o:p></o:p>
public static void saveObje<st1:rtx>ct</st1:rtx>ToFile(String fileName, Serializable obje<st1:rtx>ct</st1:rtx>) throws Exception {<o:p></o:p>
FileOutputStream fileStream = new FileOutputStream(fileName);<o:p></o:p>
GZIPOutputStream gzipStream = new GZIPOutputStream(fileStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>OutputStream obje<st1:rtx>ct</st1:rtx>Steam = new Obje<st1:rtx>ct</st1:rtx>OutputStream(gzipStream);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Steam.writeObje<st1:rtx>ct</st1:rtx>(obje<st1:rtx>ct</st1:rtx>);<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Steam.flush();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Steam.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
gzipStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
fileStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
}<o:p></o:p>
/**<o:p></o:p>
* 从文件中获取对象<o:p></o:p>
* @param fileName<o:p></o:p>
* @return<o:p></o:p>
* @throws java.lang.Exception<o:p></o:p>
*/<o:p></o:p>
public static Obje<st1:rtx>ct</st1:rtx> getObje<st1:rtx>ct</st1:rtx>FromFile(String fileName) throws Exception {<o:p></o:p>
FileInputStream fileStream = new FileInputStream(fileName);<o:p></o:p>
GZIPInputStream gzipStream = new GZIPInputStream(fileStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx>InputStream obje<st1:rtx>ct</st1:rtx>Steam = new Obje<st1:rtx>ct</st1:rtx>InputStream(gzipStream);<o:p></o:p>
Obje<st1:rtx>ct</st1:rtx> obje<st1:rtx>ct</st1:rtx> = obje<st1:rtx>ct</st1:rtx>Steam.readObje<st1:rtx>ct</st1:rtx>();<o:p></o:p>
obje<st1:rtx>ct</st1:rtx>Steam.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
gzipStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
fileStream.<st1:rtx>cl</st1:rtx>ose();<o:p></o:p>
return obje<st1:rtx>ct</st1:rtx>;<o:p></o:p>
}<o:p></o:p>
}<o:p></o:p>
|
相关推荐
Java GZIP使用的范例压缩解压文件,主要是文件流的操作,写入缓冲数据到输出流。 public void zipFile(String source,String target){ //压缩文件 public void unZipFile(String source,String ...
在提供的压缩包中,"gzip使用说明"文档将详细解释如何安装gzip和实际操作步骤。它可能涵盖了在不同操作系统(如Linux、Windows和macOS)上安装gzip的方法,以及如何使用gzip命令行工具对文件进行压缩和解压缩。此外...
gzip 是一个广泛使用的数据压缩工具,在 Unix 和类 Unix 系统(如 Linux、macOS)上非常常见。这个软件主要用于减小文件的大小,从而节省存储空间和提高数据传输效率。下面我们将深入探讨 gzip 工具及其 1.3.9 版本...
2. **启用HTTP缓存**:配合gzip使用HTTP缓存策略,如Last-Modified或ETag,可以进一步提高页面加载速度。 3. **压缩静态资源**:如CSS、JavaScript和图片等,可以预先进行gzip压缩,存储在服务器上,减少每次请求时...
3. **gzip使用说明.txt**:这份文件包含了如何使用GZIP工具的基本指南,包括如何在命令行中执行压缩和解压缩操作,可能还会涵盖不同选项和参数的使用,例如保留原文件(`-n`),设置压缩级别(`-1`到`-9`,数字越大...
2. Huffman 编码的实现:Gzip 使用 Huffman 编码对 LZ77 算法的输出结果进行编码。 3. 压缩数据的输出:Gzip 将压缩后的数据输出到文件中。 PNG 压缩算法 PNG 图形格式使用 deflate 算法来压缩图形数据。PNG 压缩...
Gzip 是一种广泛使用的数据压缩格式,主要应用于网络传输,以减少文件的大小,从而加快文件的下载速度。它的全名是 GNU zip,由 Jean-Loup Gailly 和 Mark Adler 开发,是 GNU 项目的一部分。Gzip 文件通常具有 .gz ...
gzip是Linux环境中广泛使用的文件压缩工具,其源代码主要由C语言编写。本文将深入探讨gzip的原理、C语言实现细节以及如何进行gzip压缩和解压缩。 首先,gzip基于著名的DEFLATE算法,该算法结合了LZ77(一种字典压缩...
gzip使用环境:http,server,location,if(x),一般我把它定义在nginx.conf的http{…..}之间 gzip on; 开启gzip off关闭 gzip_min_length 1k; 设置允许压缩的页面最小字节(从header头的Content-Length中获取) 建议...
红鸟GZIP使用方法: 如果您的文件名是:abc.js;那么您只需要将文件名改为:hn_gzip.php?f=abc.js(请自行适配文件路径); 内置四种文件的mime:js、css、html、xml; 文档型文件压缩率高,建议使用;图片、...
1. **gzip工作原理**:gzip使用LZ77算法,这是一种基于查找重复字符串并替换为引用的压缩方法。它还包含CRC校验,以确保数据的完整性。 2. **命令行使用**:在Linux或Unix系统中,你可以使用`gzip`命令来压缩文件,...
GZip是一种广泛使用的压缩格式,尤其在Web服务器和网络传输中扮演着重要角色。本篇文章将详细探讨如何使用GZip来解压文件,以及相关的文件和文件流操作。 首先,GZip是一种基于DEFLATE算法的压缩格式,它不仅能够...
- **高效压缩**:gzip使用LZ77压缩算法,可以有效地减少文件大小。 - **兼容性**:虽然gz格式主要在Unix/Linux系统中使用,但大多数现代压缩工具都能识别和解压gz文件,包括Windows环境。 - **单一文件**:gzip只能...
gzip是Linux和Unix系统中广泛使用的数据压缩工具,它的全称是GNU zip。这个源码包"gzip源码 (可离线安装gzip)"提供了一种在没有网络连接的情况下安装gzip的可能性,这对于那些需要在隔离环境或者没有网络的服务器上...
本文将深入探讨如何使用libcurl获取并解压这些经过gzip压缩的网页文件。 首先,理解libcurl的基本工作原理。libcurl是一个C语言库,提供了一系列函数接口,用于在各种协议下传输数据。对于HTTP协议,libcurl可以...
busybox中gzip命令简单实现,可实现压缩存储,
gzip使用DEFLATE算法,这是一种结合了LZ77和霍夫曼编码的混合压缩方法。 4. **处理CRC校验**:gzip文件尾部包含了一个校验和,用于验证解压缩后数据的完整性。解压缩模块需要计算解压后的数据的CRC,与文件中的校验...
压缩: gzip 要压缩的文件 解压缩: gzip -d 压缩文件 mysql压缩导出: mysqldump -u用户名 -p密码 要导出的库 [要导出的表] | gzip > d:\导出文件名.gz mysql导入压缩文件: gzip -d 导出的压缩文件 | mysql -u...
在本文中,我们将深入探讨如何在Visual C++ 6(简称VC6)环境中使用gzip库进行数据的压缩和解压。gzip是一种广泛应用于网络数据传输的压缩格式,它基于Deflate算法,能够有效地减小文件大小,从而提高传输效率。...
GZIP是一种广泛使用的无损数据压缩算法,尤其在IT领域中扮演着重要角色。这个压缩格式基于DEFLATE算法,该算法结合了LZ77(Lempel-Ziv)编码和霍夫曼编码,旨在高效地减小文件大小,同时能够完全恢复原始数据。 ...