package com.dc.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.Deflater; import java.util.zip.Inflater; import org.apache.commons.codec.binary.Base64; /* ****************** 类说明 ********************* * class : ZLibUtils * @author : ncc * create time : 2017-12-20 下午03:15:56 * @version : 1.0 * description : * @see : * ************************************************/ public abstract class ZLibUtils { /* ******************************************** * method name : compress * description : 压缩方法 * @return : byte[] 压缩后的数据 * @param : @param data 待压缩数据 * @param : @return * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static byte[] compress(byte[] data) { byte[] output = new byte[0]; Deflater compresser = new Deflater(Deflater.BEST_COMPRESSION); compresser.reset(); compresser.setInput(data); compresser.finish(); ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length); try { byte[] buf = new byte[1024]; while (!compresser.finished()) { int i = compresser.deflate(buf); bos.write(buf, 0, i); } output = bos.toByteArray(); } catch (Exception e) { output = data; e.printStackTrace(); } finally { try { bos.close(); } catch (IOException e) { e.printStackTrace(); } } compresser.end(); return output; } /* ******************************************** * method name : compressData * description : 字符串先压缩,后Base64编码 * @return : String * @param : @param data * @param : @return * @param : @throws Exception * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static String compressData(String data) throws Exception{ return new String(getenBASE64inCodec(ZLibUtils.compress(data.getBytes()))); } /* ******************************************** * method name : decompress * description : 解压缩 * @return : byte[] 解压缩后的数据 * @param : @param data 待解压的数据 * @param : @return * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static byte[] decompress(byte[] data) { byte[] output = new byte[0]; Inflater decompresser = new Inflater(); decompresser.reset(); decompresser.setInput(data); ByteArrayOutputStream o = new ByteArrayOutputStream(data.length); try { byte[] buf = new byte[1024]; while (!decompresser.finished()) { int i = decompresser.inflate(buf); o.write(buf, 0, i); } output = o.toByteArray(); } catch (Exception e) { output = data; e.printStackTrace(); } finally { try { o.close(); } catch (IOException e) { e.printStackTrace(); } } decompresser.end(); return output; } /* ******************************************** * method name : decompressData * description : 解压缩字符串,先进行Base64解码,在解压 * @return : String * @param : @param encdata * @param : @return * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static String decompressData(String encdata) { return new String(ZLibUtils.decompress(getdeBASE64inCodec(encdata))); } /* ******************************************** * method name : getenBASE64inCodec * description : 对数组进行Base64 encode * @return : String * @param : @param b * @param : @return * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static String getenBASE64inCodec(byte[] b) { if (b == null) return null; return new String((new Base64()).encode(b)); } /* ******************************************** * method name : getdeBASE64inCodec * description : 对字符串进行Base64 decode * @return : byte[] * @param : @param s * @param : @return * modified : ncc , 2017-12-20 * @see : * ********************************************/ public static byte[] getdeBASE64inCodec(String s) { if (s == null) return null; return new Base64().decode(s.getBytes()); } public static void main(String[] args) throws Exception{ StringBuilder batchContent = new StringBuilder(); batchContent.append("start,").append("100").append("|"); for(int i = 1; i <= 100; i ++) { batchContent.append("123456#").append("0000#").append("10").append("#").append("110101198001010038").append("#").append("622105010755901123").append("#"); if (i < 100) { batchContent.append(","); } else { batchContent.append("|end"); } } System.out.println("压缩前的长度:" + batchContent.length() + ",压缩前为:" + batchContent); String compressStr = ZLibUtils.compressData(batchContent.toString()); System.out.println("压缩后的长度:" + compressStr.length() + ",压缩前为:" + compressStr); String decompressStr = ZLibUtils.decompressData(compressStr.toString()); System.out.println("解压后的长度:" + decompressStr.length() + ",解压后为:" + decompressStr); } }
依赖jar包及依赖jar包源码见附件。
http://commons.apache.org/proper/commons-codec/download_codec.cgi
相关推荐
本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util.zip)**: Java提供了`java.util.zip`包,它包含了处理压缩文件...
### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...
请注意,以上描述是基于常规Java压缩库的功能和一个理想化的`TTools-master`类库所作的推测。具体`TTools-master`的实现和特性应参照其官方文档或源代码。在实际使用时,务必查阅相关文档,确保正确理解和使用该类库...
在Java编程环境中,处理RAR文件的压缩和解压任务是一项常见的需求。RAR是一种流行的压缩格式,通常用于存储和传输大量数据。本篇文章将详细介绍如何使用Java实现RAR文件的压缩和解压操作。 首先,Java标准库并没有...
在本文档中,我们将深入探讨如何在Java中实现文件和文件夹的压缩与解压缩,以及相关的知识点。 1. **Java Zip API基础** Java的`java.util.zip`包提供了一些核心类,如`ZipInputStream`、`ZipOutputStream`、`Zip...
Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载
java 文件zip 压缩与解压 可以直接调用
JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
在Java编程中,处理文件的压缩和解压缩是常见的任务,尤其在数据传输、存储优化或者备份场景下。本文将详细讲解如何使用Java API来压缩和解压缩`.zip`、`.rar`和`.tar`这三种常见的文件格式。 首先,对于`.zip`文件...
字符串的压缩和解压,java语言编写,zip实现,代码编写
java压缩解压ZIP
在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...
java压缩解压文件
GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...
本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...
### Java中压缩与解压——中文文件名乱码解决办法 #### 一、问题背景及原理分析 在Java中处理文件的压缩与解压时,经常会遇到中文文件名出现乱码的问题。这个问题主要源于Java中默认使用的编码方式与实际文件名...
在Java程序中,你需要编写两个主要类:一个用于压缩,另一个用于解压。这两个类都需要维护字典状态,并按照上述步骤进行操作。同时,为了便于使用,可以设计一个主类来接收用户输入,调用压缩和解压类,并输出结果。...
Apache的java压缩(解压)文件jar包; jar包的名字有些别扭叫ant.jar
本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...