- 浏览: 37871 次
- 性别:
- 来自: 台州
最新评论
主要用到了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 2239有些登陆需要涉及到重定向登录虾米音乐网的例子httpcli ... -
poi:无法获取公式值
2012-06-01 09:16 2158有时候用cell.getNumericCellValue()无 ... -
通过set移除list相同项
2012-03-21 11:51 1100今天按照boss的要求做的时候,遇到了一个问题。boss一条记 ... -
apache ant 解压缩zip
2012-03-08 15:39 1803使用apache ant.tools.zip来打包和解压缩。 ... -
改变ie查看源代码的打开方式
2012-02-22 09:47 1378更改IE的“查看源代码”打开的编辑器--notepa ... -
又简单又好用的同步控制
2012-02-21 10:45 747上代码 package com.enfang; /** ... -
struts2接收前台参数的3个方法
2012-02-10 09:18 383101.public class GetRequestParam ... -
DBCP的使用
2012-01-31 10:40 993反正是工具类,直接上代码吧。复制一下就可以用了 pac ... -
邮件抓取器的实现
2012-01-19 14:16 861朋友要一个邮件抓取器 ... -
java map的遍历
2012-01-19 11:36 729有时候需要对map进行排序,什么会进行对map的遍历,以下是对 ... -
JOptionPane JOptionPane
2012-01-16 14:35 894package T1; import jav ... -
httpClient的使用
2012-01-13 13:42 853httpClient的简单使用方法(代理方式的)。 p ... -
FileUpload
2012-01-11 15:49 750以下为apache fileupload的使用。 先一个se ... -
poi :合并excel的单元格
2011-12-19 15:32 1130// 合并单元格 从左上角合并到右下角 ... -
HtmlPaser与StringEscapeUtils共舞抓取网页
2011-12-13 14:48 1472用正则来匹配的确很强大,但如果是网页的话HtmlPaser更方 ... -
jacob:no jacob-1.15-M4-x86 in java.library.path
2011-12-13 13:37 2605今天遇到一个很蛋疼的问题,生成ppt的时候老抱no jacob ...
相关推荐
基于Qt实现的霍夫曼编码的压缩解压缩程序。压缩、解压缩采用单独一个线程,ui界面一个线程。
文件压缩解压缩包 Commons Compress
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
使用commons-compress-1.7解压缩.tar.Z文件包
commons-compress-1.18.jar是一个Java压缩库,专注于数据的压缩和解压缩功能,支持多种常见的压缩格式。它提供了广泛的压缩算法和工具,用于数据存储、传输和优化存储空间。 【使用人群】 适用于Java开发者、数据...
java源码:文件压缩解压缩包 Commons Compress.rar
C#,哈夫曼编码(Huffman Code)压缩(Compress )与解压缩(Decompress)算法与源代码 1951年,哈夫曼和他在MIT信息论的同学需要选择是完成学期报告还是期末考试。导师Robert M. Fano给他们的学期报告的题目是,...
用于压缩/解压缩的java开发工具包,基本上主流格式全包含,其中apache-common-compress内有5个jar包,两个是test的不用管,剩余三个,一个是源码包,一个是开发包另一个是javadoc。解压除RAR外的所有格式。 apache-...
1、开发软件过程中把一些东西压缩成zip文件 2、把zip文件解压缩
huffmanCompress哈弗曼压缩与解压缩,一个压缩工具
当要编辑时,可再将它们解压缩,支持styles、javascript、VBscript、VRML。 HTML COMPRESS并未将代码精简,不过是把那些仅仅是为了便于编辑而对浏览无用的信息删除,如回车符、一些注释信息等。而HTML UNCOMPRESS则...
Huffman-compress:哈夫曼压缩与解压缩
该文件为java版的7z解压缩工具,目前已经支持tar,7z,gz等格式的代码解压缩
物超所值.亲手测试修改后的java压缩解压缩类直接可以使用的方法
pyminizip资源包可支持python的解压缩,相较于传统的cmd下解压缩更加方便,无需添加环境变量,打包后也无异常出现,比较稳定
这是使用java 编写的一个zip解压缩工具,既可以解压缩zip包,也可以把目录打包成为zip压缩包. 源代码下载地址: http://pan.baidu.com/s/1c0EJrlm
实现JAVA解压缩带密码的RAR压缩包,支持中文,支持Window、Linux平台
基于Java的文件压缩解压缩包 Commons Compress.zip
基于java的文件压缩解压缩包 Commons Compress.zip