- 浏览: 213123 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (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 1260http://www.cnblogs.com/liusongl ... -
eclipse字体问题
2017-06-09 12:26 489.metadata\.plugins\org.eclipse. ... -
泛型方法指定返回值类型
2017-04-01 17:11 972public static <T> T getCa ... -
mysql数据库编码设置
2017-03-31 14:09 0SHOW VARIABLES LIKE 'char%' se ... -
java异常分类
2017-03-21 20:00 691http://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 351http://blog.csdn.net/gjanyanlig ... -
内存管理和垃圾回收
2017-02-27 09:14 559http://blog.csdn.net/gjanyanlig ... -
activiti学习 表相关
2017-02-22 10:53 0select * from EFLOW_WO_COMMON w ... -
jboss之启动加载过程详解(-)
2017-02-20 17:04 970http://www.2cto.com/os/201404/2 ...
相关推荐
java利用ant压缩指定文件夹-附件资源
下载即可导入实现压缩文件夹和文件。 代码实现请看下面网址: https://blog.csdn.net/echohuangshihuxue/article/details/81837591
1.Android 压缩文件,压缩文件夹 2.解压文件,解压文件夹 3.完美支持文件名称和文件夹目录中存在中文的乱码问题 4.apache下的 ant.jar包 5.要点 mainifest中的权限 6. zipUtil在压缩和解压过程中的编码格式的指定...
使用java压缩也解压zip文件方法,解决中文乱码问题。使用java自带的压缩解压算法,会出现中文乱码问题。使用apache io的zip包,有效解决该问题。Ant的压缩解压,也是使用该类。
AntZip压缩/*** 对传入的目录或者是文件进行压缩* @param srcFile 需要 压缩的目录或者文件* @param destFile 压缩文件的路径*/public void doZip(String srcFile, String destFile) {// zipDirectoryPath:需要...
2、指定文件夹(文件夹中必须有一个文件),程序会自动的压缩文件为 zip,然后下载删除源文件与压缩文件。 3、可以指定文件都为最后生成为zip文件下载,且删除源文件。 1、压缩文件或者目录(只是压缩不删除):...
2、配置环境变量,将解压缩的路径(你的硬盘:\放的文件夹下\apache-ant-1.8.4\bin),配置在环境变量的path路径下,输入ant看效果。 3、部署本项目,运行构建看效果。 说明:这个是一个项目开发的辅助工具,比较...
NULL 博文链接:https://ynp.iteye.com/blog/1296569
结合网上资源,写了一个文件夹打包的工具类,含所需ant.jar 压缩格式:.zip
java中实际是提供了对 zip等压缩格式的支持,但是为什么这里会用到ant呢? 原因主要有两个: 1. java提供的类对于包括有中文字符的路径,文件名支持不够好,你用其它第三方软件解压的时候就会存在乱码。而ant.jar就...
给定dir目录,使用ant类自带压缩功能,进行文件夹的打包
JAVA 文件夹压缩解压,并使用AES加密源代码,带ant.jar包
java 压缩和解压 demo 解决中文乱码 这是本人做好的一个关于java压缩、解压缩文件或文件夹的demo,解决了中文乱码的问题,可以压缩或解压缩嵌套文件夹。一个ZipHelper + ant.jar轻松解决^_^,希望可以帮助到大家!具体...
本压缩文件解压后生成的解压文件夹即文件用于博客《Ant——使用Ant构建简单Java项目》的试验,博客参见网址:http://blog.csdn.net/gaohuanjie/article/details/40144821
将下载的Ant压缩文件解压缩到任意路径,然后增加ANT_HOME的环境变量,让变量的值为Ant的解压缩路径。并在PATH环境变量中增加%ANT_HOME%/bin环境变量。 4.安装MySQL 5.0或更高版本,安装MysSQL时选择GBK的编码方式...
将下载的Ant压缩文件解压缩到任意路径,然后增加ANT_HOME的环境变量,让变量的值为Ant的解压缩路径。并在PATH环境变量中增加%ANT_HOME%/bin环境变量。 4.安装MySQL 5.0或更高版本,安装MysSQL时选择GBK的编码方式...
//ZipOutputStream类:完成文件或文件夹的压缩 ZipOutputStream outf=new ZipOutputStream(new FileOutputStream(zipfile)); outf.setEncoding("gbk"); for(int i=0;i;i++){ FileInputStream in=...
这是Ant工具Windows版压缩包,来自Apache官网。免积分分享。 Ant是一个基于Java的build工具。 有些时候需要安装Ant,...安装方法:解压缩至某一目录,将该压缩包内bin文件夹下的ant.bat文件的路径加入系统变量Path下。
一个我做好的java压缩/解压缩文件的demo,一个ZipHelper类+ant.jar包,解决了压缩或解压缩后中文乱码的问题!,可解压嵌套文件夹,用的过程只需new一个ZipHelper,调用该类方法即可,demo里有详细说明!^_^