- 浏览: 222791 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (213)
- SQLServer (8)
- flex (8)
- 文章 (5)
- java (91)
- 数据结构 (0)
- 设计模式 (0)
- C# (2)
- Oracle (4)
- 技术 (4)
- 云计算 (0)
- 算法 (0)
- 记录 (3)
- javascript (5)
- div/css (1)
- http (0)
- IE (1)
- web (1)
- hadoop (0)
- extjs (4)
- hibernate (6)
- 错误记录 (5)
- mysql (4)
- json (1)
- jvm (1)
- spring (4)
- 工具 (2)
- tomcat (3)
- cxf (3)
- spring data (1)
- memcached (5)
- android-exception (2)
- 数据压缩 (1)
- 博客 (2)
- bat (0)
- nginx (3)
- svn (2)
- jpa (1)
- windows (2)
- h2 (2)
- webservice (2)
- android (5)
- oa (0)
- eclipse (2)
- jquery (2)
- jni (4)
- weblogic (1)
- work (0)
- smartclient (1)
- sql (0)
- excel (0)
- test (0)
- t (0)
- js (4)
- utils (0)
- bootstrap (0)
- sniper (0)
- ztree (0)
- google (0)
- mdb (0)
- redis (1)
- 思想 (1)
- css (0)
- appCan (0)
- activiti (0)
- 工作 (0)
- 浏览器 (1)
package com.sniper.test;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
public class ZipUtil {
public static final int BUFFER = 1024 * 4;
/**
* 压缩一个文件夹到一个指定文件
* @param zipPath 需要压缩的文件夹路径
* @param destFile 压缩到的文件
* @throws IOException
*/
public static void zipFiles(String zipPath, String destFile) throws IOException{
File parentFile = new File(zipPath);
Set<String> fileSet = new HashSet<String>();
listFile(parentFile, fileSet);
zipFiles(fileSet, new File(zipPath), destFile);
}
/**
* @param filePathList 压缩的文件列表
* @param destFile 压缩到的文件
* @param rootDir 根路径
* @throws IOException
*/
public static void zipFiles(Set<String> filePathList, File destFile, String rootDir) throws IOException {
byte[] buf = new byte[BUFFER];
ZipEntry ze = null;
int readLen = 0;
ZipOutputStream out = null;
InputStream in = null;
try {
out = new ZipOutputStream(new FileOutputStream(destFile));
for (String filePath : filePathList) {
File srcFile = new File(filePath);
//是文件
if (srcFile.isFile()) {
//创建一个ZipEntry,并设置Name和其它的一些属性
ze = new ZipEntry(getRelativeFileName(rootDir, srcFile));
ze.setSize(srcFile.length());
ze.setTime(srcFile.lastModified());
//将ZipEntry加到out中,再写入实际的文件内容
out.putNextEntry(ze);
try {
in = new BufferedInputStream(new FileInputStream(srcFile));
while ( (readLen = in.read(buf, 0, BUFFER)) != -1) {
out.write(buf, 0, readLen);
}
}
finally {
if (in != null) {
try {
in.close();
}
catch (Exception ignore) {
}
}
}
}
//是目录
else if (srcFile.isDirectory()){
ze = new ZipEntry(getRelativeFileName(rootDir, srcFile));
//仅仅将ZipEntry加到out中
out.putNextEntry(ze);
}
else {
System.out.println(srcFile + " is neither a file nor a directory, ignore it");
continue;
}
out.closeEntry();
}
}
finally {
if (in != null) {
try {
in.close();
}
catch (Exception ignore) {
}
finally {
in = null;
}
}
if (out != null) {
try {
out.close();
}
catch (Exception ignore) {
}
finally {
out = null;
}
}
}
}
public static void listFile(File parentFile, Set<String> fileSet) {
if (parentFile.isDirectory()) {
File[] files = parentFile.listFiles();
for (int i = 0; i < files.length; i++) {
listFile(files[i], fileSet);
}
//fileSet.add(parentFile.getAbsolutePath()); // no parent
}
else {
fileSet.add(parentFile.getAbsolutePath());
}
}
public static String getRelativeFileName(String baseDir, File realFile) {
File real = realFile;
File base = new File(baseDir);
String ret = real.getName();
if (!realFile.isFile()) {
ret += '/';
}
while (true) {
real = real.getParentFile();
if (real == null) {
break;
}
if (real.equals(base)) {
break;
}
else {
//这里不能使用File.separator替代“/”,因为压缩/解压都只识别“/”分割符
ret = real.getName() + '/' + ret;
}
}
System.out.println(ret);
return ret;
}
public static void main(String[] args) throws Exception {
String zipPath = "c:/zip";
File parentFile = new File(zipPath);
Set<String> fileSet = new HashSet<String>();
listFile(parentFile, fileSet);
for(String fileStr : fileSet){
//System.out.println(fileStr);
}
zipFiles(fileSet, new File("c:/zip.zip"), zipPath);
}
}
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashSet;
import java.util.Set;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;
public class ZipUtil {
public static final int BUFFER = 1024 * 4;
/**
* 压缩一个文件夹到一个指定文件
* @param zipPath 需要压缩的文件夹路径
* @param destFile 压缩到的文件
* @throws IOException
*/
public static void zipFiles(String zipPath, String destFile) throws IOException{
File parentFile = new File(zipPath);
Set<String> fileSet = new HashSet<String>();
listFile(parentFile, fileSet);
zipFiles(fileSet, new File(zipPath), destFile);
}
/**
* @param filePathList 压缩的文件列表
* @param destFile 压缩到的文件
* @param rootDir 根路径
* @throws IOException
*/
public static void zipFiles(Set<String> filePathList, File destFile, String rootDir) throws IOException {
byte[] buf = new byte[BUFFER];
ZipEntry ze = null;
int readLen = 0;
ZipOutputStream out = null;
InputStream in = null;
try {
out = new ZipOutputStream(new FileOutputStream(destFile));
for (String filePath : filePathList) {
File srcFile = new File(filePath);
//是文件
if (srcFile.isFile()) {
//创建一个ZipEntry,并设置Name和其它的一些属性
ze = new ZipEntry(getRelativeFileName(rootDir, srcFile));
ze.setSize(srcFile.length());
ze.setTime(srcFile.lastModified());
//将ZipEntry加到out中,再写入实际的文件内容
out.putNextEntry(ze);
try {
in = new BufferedInputStream(new FileInputStream(srcFile));
while ( (readLen = in.read(buf, 0, BUFFER)) != -1) {
out.write(buf, 0, readLen);
}
}
finally {
if (in != null) {
try {
in.close();
}
catch (Exception ignore) {
}
}
}
}
//是目录
else if (srcFile.isDirectory()){
ze = new ZipEntry(getRelativeFileName(rootDir, srcFile));
//仅仅将ZipEntry加到out中
out.putNextEntry(ze);
}
else {
System.out.println(srcFile + " is neither a file nor a directory, ignore it");
continue;
}
out.closeEntry();
}
}
finally {
if (in != null) {
try {
in.close();
}
catch (Exception ignore) {
}
finally {
in = null;
}
}
if (out != null) {
try {
out.close();
}
catch (Exception ignore) {
}
finally {
out = null;
}
}
}
}
public static void listFile(File parentFile, Set<String> fileSet) {
if (parentFile.isDirectory()) {
File[] files = parentFile.listFiles();
for (int i = 0; i < files.length; i++) {
listFile(files[i], fileSet);
}
//fileSet.add(parentFile.getAbsolutePath()); // no parent
}
else {
fileSet.add(parentFile.getAbsolutePath());
}
}
public static String getRelativeFileName(String baseDir, File realFile) {
File real = realFile;
File base = new File(baseDir);
String ret = real.getName();
if (!realFile.isFile()) {
ret += '/';
}
while (true) {
real = real.getParentFile();
if (real == null) {
break;
}
if (real.equals(base)) {
break;
}
else {
//这里不能使用File.separator替代“/”,因为压缩/解压都只识别“/”分割符
ret = real.getName() + '/' + ret;
}
}
System.out.println(ret);
return ret;
}
public static void main(String[] args) throws Exception {
String zipPath = "c:/zip";
File parentFile = new File(zipPath);
Set<String> fileSet = new HashSet<String>();
listFile(parentFile, fileSet);
for(String fileStr : fileSet){
//System.out.println(fileStr);
}
zipFiles(fileSet, new File("c:/zip.zip"), zipPath);
}
}
发表评论
-
adc-0205
2021-02-18 09:51 0data-handler-1.0-SNAPSHOT-B2-20 ... -
spring aop和ioc的区别
2017-06-21 15:25 0什么是DI机制? 依赖注入(Dependecy Inject ... -
SpringMVC的各种参数绑定方式
2017-06-16 09:39 0http://www.cnblogs.com/HD/p/410 ... -
spring mvc传递list参数
2017-06-15 23:41 1323http://www.cnblogs.com/liusongl ... -
eclipse字体问题
2017-06-09 12:26 538.metadata\.plugins\org.eclipse. ... -
泛型方法指定返回值类型
2017-04-01 17:11 1038public static <T> T getCa ... -
mysql数据库编码设置
2017-03-31 14:09 0SHOW VARIABLES LIKE 'char%' se ... -
java异常分类
2017-03-21 20:00 742http://www.blogjava.net/balajin ... -
Java工程师成神之路
2017-03-08 13:59 0http://www.importnew.com/17389. ... -
JEECG快速开发平台
2017-02-27 17:03 0http://demo.jeecg.org/loginCont ... -
Java性能调优笔记
2017-02-27 15:38 0http://www.cnblogs.com/likehua/ ... -
Windows环境Mycat数据库分库分表中间件部署
2017-02-27 14:23 0http://www.cnblogs.com/Wulex/p/ ... -
浅谈算法和数据结构(1):栈和队列
2017-02-27 14:21 0http://blog.jobbole.com/79267/ ... -
关系型数据的分布式处理系统MyCAT
2017-02-27 14:14 0http://www.blogjava.net/amigoxi ... -
关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
2017-02-27 14:05 0http://blog.csdn.net/allenlinru ... -
实战 Lucene,第 1 部分: 初识 Lucene
2017-02-27 14:02 0https://www.ibm.com/developerwo ... -
内存调优
2017-02-27 09:20 378http://blog.csdn.net/gjanyanlig ... -
内存管理和垃圾回收
2017-02-27 09:14 612http://blog.csdn.net/gjanyanlig ... -
activiti学习 表相关
2017-02-22 10:53 0select * from EFLOW_WO_COMMON w ... -
jboss之启动加载过程详解(-)
2017-02-20 17:04 1016http://www.2cto.com/os/201404/2 ...
相关推荐
标签中的“压缩文件 压缩文件夹 ant-1.9.7 java实现压缩”强调了Ant在Java环境中对单个文件和整个目录结构进行压缩的能力。Ant的`<zip>`任务不仅限于压缩,还可以解压缩ZIP文件,或者在现有ZIP文件中添加、删除或...
java利用ant压缩指定文件夹-附件资源
4. **递归遍历文件夹**: 如果你需要压缩的是一个文件夹,你需要递归地遍历所有子文件和子文件夹。这可以通过递归函数实现,对每个文件创建一个`ZipEntry`,然后将其写入`ZipOutputStream`。 5. **设置压缩级别**: `...
1.Android 压缩文件,压缩文件夹 2.解压文件,解压文件夹 3.完美支持文件名称和文件夹目录中存在中文的乱码问题 4.apache下的 ant.jar包 5.要点 mainifest中的权限 6. zipUtil在压缩和解压过程中的编码格式的指定...
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金...通过解压缩此ZIP文件并配置环境变量,用户可以利用Ant执行各种项目构建任务。详细的使用方法和特性可通过提供的readme.txt文件进行查阅。
标题 "ant和yuicompressor 压缩css、js方案" 涉及到的是在软件开发中如何使用构建工具Ant以及JavaScript压缩工具YUI Compressor来优化前端资源,特别是CSS和JavaScript文件。这两个工具在Web开发中起着至关重要的...
AntZip压缩/*** 对传入的目录或者是文件进行压缩* @param srcFile 需要 压缩的目录或者文件* @param destFile 压缩文件的路径*/public void doZip(String srcFile, String destFile) {// zipDirectoryPath:需要...
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...
### Java简单压缩算法:利用Apache Ant进行文件夹压缩 在Java开发中,文件的压缩与解压是一项常见的需求,尤其是在处理大量数据或需要传输大文件时。本文将深入解析一个基于Java的简单压缩算法,该算法利用Apache ...
首先,为了开始使用ANT,你需要将`ant`文件夹放置在计算机的根目录下,确保它与源代码位于同一磁盘内。接下来,设置系统环境变量`PATH`,例如添加`D:\ant\bin`,以便系统能够找到ANT的可执行文件。这使得在任何目录...
2、配置环境变量,将解压缩的路径(你的硬盘:\放的文件夹下\apache-ant-1.8.4\bin),配置在环境变量的path路径下,输入ant看效果。 3、部署本项目,运行构建看效果。 说明:这个是一个项目开发的辅助工具,比较...
在这个场景中,我们使用了Java来实现文件夹的打包功能,并且依赖了Apache Ant库的`ant.jar`,这是一个强大的构建工具,提供了许多用于处理文件操作的API。 Java标准库虽然内置了`java.util.zip`包,可以用于创建ZIP...
4. **指定源文件和目标文件夹**:通过fileset标签指定源文件的位置,并定义输出文件夹(outputfolder),告诉压缩任务应该将压缩后的文件放入哪个目录。 5. **执行构建任务**:最后,通过Ant命令行工具执行定义好的...
在这种情况下,引入Apache Ant的`ant.jar`库可以解决这些问题,因为它提供了对中文字符的良好支持和更便捷的压缩与解压缩功能。 Apache Ant是一个基于Java的任务驱动的构建系统,它提供了一系列的任务类,可以用于...
由于/usr是隐藏目录,你可以通过终端来创建这个文件夹。 3. 将下载的Ant压缩包移动到/usr/local目录下。这需要使用终端和管理员权限。例如,如果你将压缩包放在桌面上,可以使用以下命令: ``` cd ~/Desktop ...
首先,用户需要下载这个压缩包,然后使用常见的Linux命令(如`tar -zxvf apache-ant-1.9.6.tgz`)解压缩到任意目录。例如,用户可能选择`/opt`或`/usr/local`这样的系统目录,或者个人的工作空间`~/.local`。 接...
2. **配置Eclipse**:在Eclipse中,进入`Window > Preferences > Ant > Runtime`,点击`Classpath`标签页,然后添加Ant安装目录下的`lib`文件夹,这样Eclipse就可以识别Ant库了。 **三、创建build.xml文件** 在...
这个文件夹将包含Ant的所有必需文件。 接着,配置系统环境变量是必要的步骤。在Windows系统中,可以通过以下步骤进行设置: 1. 计算机 -> 属性 -> 高级系统设置 -> 环境变量。 2. 在“系统变量”区域,点击“新建”...