- 浏览: 39130 次
- 性别:
- 来自: 台州
最新评论
主要用到了apach commons里的compress包。下载:http://commons.apache.org/compress/download_compress.cgi
实现了打包和解压缩的功能。
1.打包功能:主要是用了递归的方法。如果打包文件的话,则给这个文件外加一个文件夹,这里用zip文件名当一个文件夹,再进行打包。和xp打包文件然后解压的效果差不多。文章用了IOUtils.copy其实就流的读写,只不过这样代码稍微简单的。
2.解压:最主要的是要判断压缩包里的东西是文件,还是文件夹,分开来处理就可以了。这个只能解一层,如果有需要可以递归下去继续解压缩。代码如下,请指点。package zip;
import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Enumeration; import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; import org.apache.commons.compress.archivers.zip.ZipFile; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; public class CompressUtils { private OutputStream out = null; private BufferedOutputStream bos = null; private ZipArchiveOutputStream zaos = null; public static void main(String[] args) throws FileNotFoundException, Exception { CompressUtils compressUtils = new CompressUtils(); compressUtils.zip("c:/abc.zip", "d:/7767test.xls", ""); // compressUtils.unzip("c:/abc.zip", "d:/a/g/"); } public void close() throws Exception { zaos.flush(); zaos.close(); bos.flush(); bos.close(); out.flush(); out.close(); } /** * * @param zipPath * 得到的zip文件的名称(含路径) * @param filePath * 需要压缩的文件所在的目录 * @param pathName * 压缩到pathName文件夹下 * @throws Exception */ public void zip(String zipPath, String filePath, String pathName) throws Exception { File f = new File(zipPath); out = new FileOutputStream(f); bos = new BufferedOutputStream(out); zaos = new ZipArchiveOutputStream(bos); zaos.setEncoding("GBK"); if (!"".equals(pathName) && null != pathName) { pathName = pathName + File.separator; } else { pathName = f.getName().substring(0, f.getName().length() - 4) + File.separator; } zip(zaos, filePath, pathName); close(); } /** * * @param zaos * 流 * @param filePath * 需要打包的目录 * @param pathName * 打包到pathName的目录下 * @throws FileNotFoundException * @throws IOException */ public void zip(ZipArchiveOutputStream zaos, String filePath, String pathName) throws FileNotFoundException, IOException { File file2zip = new File(filePath); if (file2zip.isFile()) { zaos.putArchiveEntry(new ZipArchiveEntry(pathName + file2zip.getName())); IOUtils.copy(new FileInputStream(file2zip.getAbsolutePath()), zaos); zaos.closeArchiveEntry(); } else { File[] files = file2zip.listFiles(); if (files == null || files.length < 1) { return; } for (int i = 0; i < files.length; i++) { if (files[i].isDirectory()) { zip(zaos, files[i].getAbsolutePath(), pathName + files[i].getName() + File.separator); } else { zaos.putArchiveEntry(new ZipArchiveEntry(pathName + files[i].getName())); IOUtils.copy(new FileInputStream(files[i].getAbsolutePath()), zaos); zaos.closeArchiveEntry(); } } } } /** * * @param zipFileName * 压缩文件名 * @param zip2FileName * 解压路径 * @throws IOException */ public void unzip(String zipFileName, String zip2FileName) throws IOException { File zipfile = new File(zipFileName); try { zip2FileName = zip2FileName + File.separator; FileUtils.forceMkdir(new File(zip2FileName)); ZipFile zf = new ZipFile(zipfile, "GBK"); Enumeration zipArchiveEntrys = zf.getEntries(); while (zipArchiveEntrys.hasMoreElements()) { ZipArchiveEntry zipArchiveEntry = (ZipArchiveEntry) zipArchiveEntrys.nextElement(); if (zipArchiveEntry.isDirectory()) { FileUtils.forceMkdir(new File(zip2FileName + zipArchiveEntry.getName() + File.separator)); } else { IOUtils.copy(zf.getInputStream(zipArchiveEntry), FileUtils.openOutputStream(new File(zip2FileName + zipArchiveEntry.getName()))); } } } catch (Exception e) { throw new IOException("找不到文件:" + zipFileName); } } }
发表评论
-
httpclient重定向和post
2012-07-10 15:55 2292有些登陆需要涉及到重定向登录虾米音乐网的例子httpcli ... -
poi:无法获取公式值
2012-06-01 09:16 2212有时候用cell.getNumericCellValue()无 ... -
通过set移除list相同项
2012-03-21 11:51 1145今天按照boss的要求做的时候,遇到了一个问题。boss一条记 ... -
apache ant 解压缩zip
2012-03-08 15:39 1852使用apache ant.tools.zip来打包和解压缩。 ... -
改变ie查看源代码的打开方式
2012-02-22 09:47 1423更改IE的“查看源代码”打开的编辑器--notepa ... -
又简单又好用的同步控制
2012-02-21 10:45 799上代码 package com.enfang; /** ... -
struts2接收前台参数的3个方法
2012-02-10 09:18 388001.public class GetRequestParam ... -
DBCP的使用
2012-01-31 10:40 1030反正是工具类,直接上代码吧。复制一下就可以用了 pac ... -
邮件抓取器的实现
2012-01-19 14:16 909朋友要一个邮件抓取器 ... -
java map的遍历
2012-01-19 11:36 775有时候需要对map进行排序,什么会进行对map的遍历,以下是对 ... -
JOptionPane JOptionPane
2012-01-16 14:35 938package T1; import jav ... -
httpClient的使用
2012-01-13 13:42 905httpClient的简单使用方法(代理方式的)。 p ... -
FileUpload
2012-01-11 15:49 788以下为apache fileupload的使用。 先一个se ... -
poi :合并excel的单元格
2011-12-19 15:32 1225// 合并单元格 从左上角合并到右下角 ... -
HtmlPaser与StringEscapeUtils共舞抓取网页
2011-12-13 14:48 1516用正则来匹配的确很强大,但如果是网页的话HtmlPaser更方 ... -
jacob:no jacob-1.15-M4-x86 in java.library.path
2011-12-13 13:37 2644今天遇到一个很蛋疼的问题,生成ppt的时候老抱no jacob ...
相关推荐
在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...
在本项目中,"Huffman Compress 霍夫曼编码 压缩 解压缩 QT"是利用Qt库来实现霍夫曼编码的压缩和解压缩功能。 具体来说,这个程序可能包含以下组成部分: 1. **数据预处理**:首先,程序需要读取输入文件并统计每...
在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...
二、压缩与解压缩API Common Compress的核心接口是`Compressor`和`Decompressor`,它们分别用于压缩和解压缩。通过这两个接口,开发者可以轻松地处理各种压缩格式。例如,使用`BZip2Compressor`进行BZip2压缩,或者...
5. 解压缩:类似地,创建对应的 `ArchiveInputStream` 或 `CompressorInputStream`,然后使用 `getNextEntry` 循环读取归档中的条目,并通过 `read` 方法获取数据。 6. 处理数据:根据需求读取并处理解压缩的数据,...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
例如,可能有一个`compress_file()`函数用于压缩单个文件,以及一个`unzip_archive()`函数用于解压缩整个ZIP文件到指定的目录。这些函数的实现可能会利用像zlib这样的底层压缩库,zlib是一个广泛使用的开源库,提供...
使用commons-compress-1.7解压缩.tar.Z文件包
【标题】:“zip压缩解压缩”这一主题主要涵盖了在计算机编程中如何使用C++语言进行ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件格式,它允许将多个文件打包成一个单一的压缩文件,以节省存储空间和提高传输...
Unix 压缩解压缩命令详解 Unix 操作系统中有多种压缩和解压缩命令,了解这些命令非常重要。本文将详细介绍 Unix 中常用的压缩格式和相应的压缩、解压缩命令。 tar 命令 tar 命令是 Unix 中最常用的打包命令,它...
然而,当压缩文件包含中文字符时,解压缩过程中可能会遇到乱码问题。这是因为编码格式不匹配或者处理方式不当导致的。本篇文章将深入探讨如何在Android平台上解决Java ZIP库在解压缩中文文件时出现的乱码问题。 ...
### zlib库解压缩知识点详解 #### 一、zlib库简介 zlib 是一个广泛使用的开源数据压缩库,由 Jean-loup Gailly 和 Mark Adler 开发并维护。该库支持无损数据压缩,主要使用 DEFLATE 压缩算法(结合了 LZ77 损失less...
### Linux下的压缩与解压缩详解 #### 一、概述 在Linux系统中,压缩与解压缩功能对于数据管理和传输非常重要。对于初学者来说,掌握基本的压缩与解压缩技巧可以帮助他们更高效地管理文件和目录。本文将详细介绍...
本示例主要探讨的是如何使用C#编程语言实现文件和目录的压缩与解压缩功能。C#,作为微软开发的一种面向对象的编程语言,提供了丰富的库和API来处理这种任务。 首先,我们要知道压缩的主要目的是减小文件或数据的...
标题中的"lz4,lz4压缩,lz4解压缩"指的是LZ4算法及其相关的压缩和解压缩过程。LZ4压缩算法基于字典匹配,通过查找输入数据中的重复模式并创建指向这些模式的指针来实现压缩。这种方法使得LZ4在处理大量数据时能够...
在IT领域,文件解压缩是日常工作中常见的操作。本文将深入探讨如何实现文件的解压缩功能,特别是针对zip文件格式的处理。我们将基于Java编程语言,以`MyZip.java`这个文件作为示例,来详细讲解相关的编程知识。 ...
Linux 下常用压缩_解压缩软件简介 Linux 操作系统中有多种常用的压缩和解压缩软件,每种软件都有其特点和使用方法。本文将对 Linux 下常用的压缩和解压缩软件进行简介,包括 compress、gzip、bzip2、tar 等。 1. ...
在Java编程语言中,文件的压缩与解压缩是常见的任务,尤其在数据传输、存储优化以及备份场景下显得尤为重要。本资源"JAVA文件压缩与解压缩实践(源代码+论文)"提供了一个完整的实践教程,包括源代码和相关论文,帮助...
例如,添加两个按钮,一个用于压缩文件,另一个用于解压缩文件,然后在按钮的Click事件处理程序中调用上述方法。 在实际开发中,可能还需要考虑错误处理,如文件不存在、权限问题等。同时,为了提高用户体验,可以...
commons-compress-1.18.jar是一个Java压缩库,专注于数据的压缩和解压缩功能,支持多种常见的压缩格式。它提供了广泛的压缩算法和工具,用于数据存储、传输和优化存储空间。 【使用人群】 适用于Java开发者、数据...