- 浏览: 38121 次
- 性别:
- 来自: 重庆
最新评论
package com.email.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class ZipUtils {
private String comment = "";
public void setComment(String comment) {
this.comment = comment;
}
/**
* @param src:要压缩的目录
* @param dest:压缩文件存档
* @throws Exception
*/
public void zip(String src, String dest, List filter) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(dest));
File srcFile = new File(src);
zip(out,srcFile,"",filter);
out.close();
}
/**
* @param out
* @param srcFile
* @param base:根路径
* @param filter:过滤
* @throws Exception
*/
public void zip(ZipOutputStream out, File srcFile, String base, List filter) throws Exception {
if(srcFile.exists()==false) {
throw new Exception("压缩目录不存在!");
}
if(srcFile.isDirectory()) {
File[] files = srcFile.listFiles();
base = base.length() == 0 ? "" : base + "/";
if (isExist(base, filter)) {
out.putNextEntry(new ZipEntry(base));
}
for(int i=0; i<files.length; i++) {
zip(out,files[i],base + files[i].getName(),filter);
}
} else {
if (isExist(base, filter)) {
base = base.length() == 0 ? srcFile.getName() : base ;
ZipEntry zipEntry = new ZipEntry(base);
zipEntry.setComment(comment);
out.putNextEntry(zipEntry);
FileInputStream in = new FileInputStream(srcFile);
int length = 0;
byte[] b = new byte[1024];
while((length=in.read(b,0,1024))!=-1) {
out.write(b,0,length);
}
in.close();
}
}
}
/**
. * 过滤出要压缩的文件夹
* @param base
* @param list
* @return
*/
public boolean isExist(String base, List list) {
if (list != null && !list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
if (base.indexOf((String) list.get(i)) >= 0) {
return true;
}
}
}
return false;
}
/**
* @param srcFile:压缩文件路径
* @param dest:解压到的目录
* @param deleteFile:解压完成后是否删除文件
* @throws Exception
*/
public void unZip(String srcFile,String dest,boolean deleteFile) throws Exception {
File file = new File(srcFile);
if(!file.exists()) {
throw new Exception("解压文件不存在!");
}
ZipFile zipFile = new ZipFile(file);
Enumeration e = zipFile.getEntries();
while(e.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry)e.nextElement();
if(zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0,name.length()-1);
File f = new File(dest + name);
f.mkdirs();
} else {
File f = new File(dest + zipEntry.getName());
f.getParentFile().mkdirs();
f.createNewFile();
InputStream is = zipFile.getInputStream(zipEntry);
FileOutputStream fos = new FileOutputStream(f);
int length = 0;
byte[] b = new byte[1024];
while((length=is.read(b, 0, 1024))!=-1) {
fos.write(b, 0, length);
}
is.close();
fos.close();
}
}
if (zipFile != null) {
zipFile.close();
}
if(deleteFile) {
file.deleteOnExit();
}
}
/**
* 获取Zip文件的注释信息
* @param srcFile
* @return
*/
public static String getZipComment(String srcFile) {
String comment = "";
try {
ZipFile zipFile = new ZipFile(srcFile);
Enumeration e = zipFile.getEntries();
while (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry) e.nextElement();
comment = ze.getComment();
if (comment != null && !comment.equals("")
&& !comment.equals("null")) {
break;
}
}
zipFile.close();
} catch (Exception e) {
System.out.println("获取zip文件注释信息失败:" + e.getMessage());
}
return comment;
}
public static void main(String[] args) throws Exception {
// long begin = System.currentTimeMillis();
// ZipUtils zu = new ZipUtils();
//// List<String> filter = new ArrayList<String>();
//// File f = new File("f:/手册");
//// for(File ff : f.listFiles()){
//// //System.out.println(ff.getName());
//// filter.add(ff.getName());
//// }
//
// //filter.add("《JavaScript 语言参考》中文版.chm");
// //filter.add("CSS 2.0样式表中文手册.chm");
// //filter.add("3RDPARTY");
// //filter.add("BANNER.GIF");
// //zu.setComment("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
// // zu.zip("f:/手册", "f:/手册.zip",filter);
// //System.out.println(ZipUtils.getZipComment("c:/hh.zip"));
// //new ZipUtils().unZip("f:/手册.zip", "f:/ccc/", true);
// //File f = new File("c:/hh.zip");
// //f.deleteOnExit();
// long end = System.currentTimeMillis();
// System.out.println(end-begin);
}
}
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
public class ZipUtils {
private String comment = "";
public void setComment(String comment) {
this.comment = comment;
}
/**
* @param src:要压缩的目录
* @param dest:压缩文件存档
* @throws Exception
*/
public void zip(String src, String dest, List filter) throws Exception {
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(dest));
File srcFile = new File(src);
zip(out,srcFile,"",filter);
out.close();
}
/**
* @param out
* @param srcFile
* @param base:根路径
* @param filter:过滤
* @throws Exception
*/
public void zip(ZipOutputStream out, File srcFile, String base, List filter) throws Exception {
if(srcFile.exists()==false) {
throw new Exception("压缩目录不存在!");
}
if(srcFile.isDirectory()) {
File[] files = srcFile.listFiles();
base = base.length() == 0 ? "" : base + "/";
if (isExist(base, filter)) {
out.putNextEntry(new ZipEntry(base));
}
for(int i=0; i<files.length; i++) {
zip(out,files[i],base + files[i].getName(),filter);
}
} else {
if (isExist(base, filter)) {
base = base.length() == 0 ? srcFile.getName() : base ;
ZipEntry zipEntry = new ZipEntry(base);
zipEntry.setComment(comment);
out.putNextEntry(zipEntry);
FileInputStream in = new FileInputStream(srcFile);
int length = 0;
byte[] b = new byte[1024];
while((length=in.read(b,0,1024))!=-1) {
out.write(b,0,length);
}
in.close();
}
}
}
/**
. * 过滤出要压缩的文件夹
* @param base
* @param list
* @return
*/
public boolean isExist(String base, List list) {
if (list != null && !list.isEmpty()) {
for (int i = 0; i < list.size(); i++) {
if (base.indexOf((String) list.get(i)) >= 0) {
return true;
}
}
}
return false;
}
/**
* @param srcFile:压缩文件路径
* @param dest:解压到的目录
* @param deleteFile:解压完成后是否删除文件
* @throws Exception
*/
public void unZip(String srcFile,String dest,boolean deleteFile) throws Exception {
File file = new File(srcFile);
if(!file.exists()) {
throw new Exception("解压文件不存在!");
}
ZipFile zipFile = new ZipFile(file);
Enumeration e = zipFile.getEntries();
while(e.hasMoreElements()) {
ZipEntry zipEntry = (ZipEntry)e.nextElement();
if(zipEntry.isDirectory()) {
String name = zipEntry.getName();
name = name.substring(0,name.length()-1);
File f = new File(dest + name);
f.mkdirs();
} else {
File f = new File(dest + zipEntry.getName());
f.getParentFile().mkdirs();
f.createNewFile();
InputStream is = zipFile.getInputStream(zipEntry);
FileOutputStream fos = new FileOutputStream(f);
int length = 0;
byte[] b = new byte[1024];
while((length=is.read(b, 0, 1024))!=-1) {
fos.write(b, 0, length);
}
is.close();
fos.close();
}
}
if (zipFile != null) {
zipFile.close();
}
if(deleteFile) {
file.deleteOnExit();
}
}
/**
* 获取Zip文件的注释信息
* @param srcFile
* @return
*/
public static String getZipComment(String srcFile) {
String comment = "";
try {
ZipFile zipFile = new ZipFile(srcFile);
Enumeration e = zipFile.getEntries();
while (e.hasMoreElements()) {
ZipEntry ze = (ZipEntry) e.nextElement();
comment = ze.getComment();
if (comment != null && !comment.equals("")
&& !comment.equals("null")) {
break;
}
}
zipFile.close();
} catch (Exception e) {
System.out.println("获取zip文件注释信息失败:" + e.getMessage());
}
return comment;
}
public static void main(String[] args) throws Exception {
// long begin = System.currentTimeMillis();
// ZipUtils zu = new ZipUtils();
//// List<String> filter = new ArrayList<String>();
//// File f = new File("f:/手册");
//// for(File ff : f.listFiles()){
//// //System.out.println(ff.getName());
//// filter.add(ff.getName());
//// }
//
// //filter.add("《JavaScript 语言参考》中文版.chm");
// //filter.add("CSS 2.0样式表中文手册.chm");
// //filter.add("3RDPARTY");
// //filter.add("BANNER.GIF");
// //zu.setComment("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
// // zu.zip("f:/手册", "f:/手册.zip",filter);
// //System.out.println(ZipUtils.getZipComment("c:/hh.zip"));
// //new ZipUtils().unZip("f:/手册.zip", "f:/ccc/", true);
// //File f = new File("c:/hh.zip");
// //f.deleteOnExit();
// long end = System.currentTimeMillis();
// System.out.println(end-begin);
}
}
发表评论
-
对象的字段以键值对的形式返回
2011-10-11 21:22 2003但是,如果双向关联都设置成fetch = FetchType. ... -
得到本机的ip地址
2011-06-25 13:12 1159public static String getL ... -
怎么获得Map<String,Date>中 String或Date类型
2011-06-16 09:28 4781有一个要求就是获得范型中类型;想了很多招都不能实现。 但有框架 ... -
javascript检验xml是否正确
2011-01-04 20:07 1048<script type="text/java ... -
图片防止盗链 转转kaka100
2011-01-03 16:11 664转。。转。。 -
新发现----享元模式
2011-01-02 23:54 722java1.5新知识: public class A { ... -
得到汉字的拼音
2011-01-02 15:17 940package cn.java; public class ... -
设置图片等比例缩小
2011-01-02 15:04 796//----------------------------- ... -
网页中一些特殊字符的转换,如[image]
2011-01-02 14:51 1010package com.email.util; public ... -
BigDecimal 的学习
2010-12-31 00:23 732package com.util; import java. ... -
人民币
2010-12-31 00:09 815package com.util; public class ... -
单例模式 转转转
2010-12-30 19:49 757单例模式的七种写法 文章分类:Java编程 转载请注明出处: ... -
Cookie的一些操作
2010-12-30 13:15 681package com.email.util; import ... -
servlet处理参数的一些操作
2010-12-30 13:09 611import javax.servlet.http.HttpS ... -
字符串与时间格式的相互操作
2010-12-30 13:06 834import java.text.ParseException ... -
文件的相关操作 转转转
2010-12-30 13:02 757package com.Utils; import java ... -
oracle 连接... 修改.....查询
2010-12-30 12:49 609package com.Utils; import java. ... -
tools----java---->mail
2010-12-20 20:28 597package cn.java; import java.u ... -
工具类-------字符串转成时间格式
2010-12-20 20:14 658package cn.java; import java.t ... -
处理中文乱码(新,比较万能)(encodeURI)
2010-12-19 01:04 1138$.ajax({ type:"GET ...
相关推荐
在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...
知识点:将1G文件压缩至1M的技巧与文件压缩原理 一、文件压缩基础知识 文件压缩技术在信息技术领域有着广泛的应用,它能够减少文件占用的存储空间,提高传输效率,尤其是在网络带宽有限的情况下,压缩技术尤为重要...
3. **GZIP格式**:GZIP是一种文件压缩格式,主要用于单个文件的压缩。Java中的`GZIPOutputStream`和`GZIPInputStream`用于对文件进行GZIP压缩和解压缩。 4. **源代码实现**:实践中提供的源代码展示了如何使用Java ...
《基于哈夫曼树的文件压缩与解压技术在QT可视化界面中的实现》 哈夫曼编码是一种数据压缩算法,其核心是构建哈夫曼树,通过对数据出现频率的统计,构建出一棵特殊的二叉树——哈夫曼树,使得出现频率高的字符具有较...
在标题提到的“将文件压缩的源码”中,我们可以深入探讨文件压缩的基本原理、常用的压缩算法以及如何通过编程实现文件压缩。 首先,我们要了解文件压缩的原理。文件中的数据通常包含大量的冗余信息,比如重复的字符...
数据结构课程设计用哈夫曼编码实现文件压缩: 一、实验题目: 用哈夫曼编码实现文件压缩 二、实验目的: 1、了解文件的概念。 2、掌握线性链表的插入、删除等算法。 3、掌握Huffman树的概念及构造方法。 4、掌握...
1. 分析给出的多文件打包/解包程序MyZip和单文件压缩程序Compress,将程序MyZip改写为一个能够处理多文件压缩/解压的控制台程序,可利用命令行参数控制其完成如下功能: 1. 将命令行参数指定的一组文件压缩为一个...
在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...
在IT领域,图形文件压缩是图像处理和数据存储的一个重要环节。这主要涉及到如何在保持图像质量的同时,减少文件的存储空间。以下是一些关于图形文件压缩的重要知识点: 1. **压缩原理**:图像文件通常包含大量的...
node.js 将多个js文件压缩到一个文件 安装 node.js、java环境 1、org 原始文件 2、out 输出文件目录 使用方法 1、将原始js 复制到org目录 2、编辑nodescript.js文件,按顺序配置需要压缩的文件列表 var ...
《易语言模块文件压缩专家》是一款专为易语言开发者设计的高效、便捷的文件压缩工具。易语言,作为中国本土的编程语言,以其简洁的语法和丰富的库支持,深受初级和中级程序员的喜爱。这款模块文件压缩专家正是为了...
在IT领域,文件压缩是一种常见的数据管理技术,用于减少文件的存储空间,提高传输效率。本文将详细讨论“简单的文件压缩程序”的实现及其工作原理,同时关注如何将多个文件压缩到一个文件中,并能自由设定目标文件的...
### 使用单条命令将目录下所有文件压缩成CAB包的方法 在IT行业中,文件管理和压缩是一项非常重要的技能。特别是对于系统管理员和技术支持人员来说,能够有效地管理文件和目录是日常工作中不可或缺的一部分。本文将...
1G的文件压缩成1M的方法1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法.rar1G的文件压缩成1M的方法...
PDF-compress.Pro 是一款专业的PDF文件压缩工具,旨在帮助用户快速减小PDF文件的大小,以便更轻松地分享、存储和传输文件。无论是个人用户还是企业用户,都可以通过PDF-compress.Pro 轻松管理和优化PDF文档。 主要...
在C语言中实现基于哈夫曼编码的文件压缩解压程序,需要深入理解哈夫曼编码的基本原理以及C语言编程技巧。 首先,哈夫曼编码是根据字符出现频率进行编码的一种方法。它通过构建一棵特殊的二叉树——哈夫曼树(也称为...
Linux系统的文件压缩和解压缩方法.pdf Linux系统的文件压缩和解压缩方法是Linux系统中非常重要的一部分。了解Linux系统的文件压缩和解压缩方法对提高用户使用Linux系统的能力非常有帮助。本文将对Linux系统的文件...
在IT领域,文件压缩是一种常见的数据处理技术,用于减少存储空间和提高传输效率。Huffman编码是文件压缩中的一种高效算法,由David A. Huffman在1952年提出,主要用于无损数据压缩。本篇将详细介绍基于Huffman树的...
1G的文件压缩成1M的方法,很多网上下载的文件只有300MB或400MB,但是解压后,居然可以达到2GB甚至更多,也许你会奇怪,为什么你用WinRAR压缩同样的文件,就没有这样的压缩效果呢?其实这是因为这些文件是用多款不同...