package com.snda.swp.util;
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;
import org.apache.commons.lang.StringUtils;
public class Main {
private static String src = "D:\\apache-tomcat-6.0.28\\webapps\\swp1\\upload\\temporary\\我的站点";
private static String dst = "D:\\apache-tomcat-6.0.28\\webapps\\swp1\\upload\\compress\\cc.zip";
public static void main(String[] args) throws FileNotFoundException, Exception {
Main main = new Main(dst);
main.createZipOut();
main.packToolFiles(src, "");
main.closeZipOut();
//main = new Main("c:/test2.zip");
//main.createZipOut();
//main.packToolFiles("C:/test", "test");
//main.closeZipOut();
//Main.unZipToFolder("c:/test1.zip", "c:/test1");
//Main.unZipToFolder("c:/test2.zip", "c:/test2");
}
private OutputStream out = null;
private BufferedOutputStream bos = null;
private ZipArchiveOutputStream zaos = null;
private String zipFileName = null;
public Main(String zipname) {
this.zipFileName = zipname;
}
public void createZipOut() throws FileNotFoundException, IOException {
File f = new File(zipFileName);
out = new FileOutputStream(f);
bos = new BufferedOutputStream(out);
zaos = new ZipArchiveOutputStream(bos);
zaos.setEncoding("GBK");
}
public void closeZipOut() throws Exception {
zaos.flush();
zaos.close();
bos.flush();
bos.close();
out.flush();
out.close();
}
/**
* 把一个目录打包到zip文件中的某目录
*
* @param dirpath
* 目录绝对地址
* @param pathName
* zip中目录
*/
public void packToolFiles(String dirpath, String pathName) throws FileNotFoundException,
IOException {
if (StringUtils.isNotEmpty(pathName)) {
pathName = pathName + File.separator;
}
packToolFiles(zaos, dirpath, pathName);
}
/**
* 把一个目录打包到一个指定的zip文件中
*
* @param dirpath
* 目录绝对地址
* @param pathName
* zip文件抽象地址
*/
public void packToolFiles(ZipArchiveOutputStream zaos, String dirpath, String pathName)
throws FileNotFoundException, IOException {
ByteArrayOutputStream tempbaos = new ByteArrayOutputStream();
BufferedOutputStream tempbos = new BufferedOutputStream(tempbaos);
File dir = new File(dirpath);
// 返回此绝对路径下的文件
File[] files = dir.listFiles();
if (files == null || files.length < 1) {
return;
}
for (int i = 0; i < files.length; i++) {
// 判断此文件是否是一个文件夹
if (files[i].isDirectory()) {
packToolFiles(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();
}
}
tempbaos.flush();
tempbaos.close();
tempbos.flush();
tempbos.close();
}
/**
* 把一个zip文件解压到一个指定的目录中
*
* @param zipfilename
* zip文件抽象地址
* @param outputdir
* 目录绝对地址
*/
public static void unZipToFolder(String zipfilename, String outputdir) throws IOException {
File zipfile = new File(zipfilename);
if (zipfile.exists()) {
outputdir = outputdir + File.separator;
FileUtils.forceMkdir(new File(outputdir));
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(outputdir + zipArchiveEntry.getName()
+ File.separator));
} else {
IOUtils.copy(zf.getInputStream(zipArchiveEntry), FileUtils
.openOutputStream(new File(outputdir + zipArchiveEntry.getName())));
}
}
} else {
throw new IOException("指定的解压文件不存在:\t" + zipfilename);
}
}
}
分享到:
相关推荐
360zip打包工具
zip打包java实现方法,其中包括打包,解压
zip打包工具完美编码zip打包工具完美编码
PHP环境下zip打包,支持全目录打包。 需要开启zip扩展
ZIP打包
很好的一个java打压缩包工具,可以打包大数据包,只要调用即可。
cab.zip 打包工具
文件批处理程序.用boost的正则表达式库过滤项.支持zip打包
文件转换为zip打包文件,可以将多个文件或文件夹进行打包生成zip,配合下载功能进行一键打包下载使用。
java打包文件夹为zip 或者打包文件 ,通过测试 zipcomcompressor 单个文件打包,循环打包速度会快非常多,要是打包文件夹,速度很慢。
因项目需求,需要在线生成world文档,并且需要批量生成world,那么就可以用zip打包所有world进行下载,这里提供的是一个简单的demo,如需了解在线生成文件,并打包到zip,可以问我
linux下zip打包shell脚本,可根据具体的内容自己给定参数
精选84套商业计划书PPT模板.zip打包下载精选84套商业计划书PPT模板.zip打包下载
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
用7_zip打包压缩的测试方案 一个很好的应用 可以自动打成zip包
1,全新webwork2.2.7.zip 打包下载。 2,"/lib"文件夹下包含所有核心架包 3,请将webwork-2.2.7.jar和lib下的所有架包拷贝到工程的lib文件夹下
spring-framework-4.0.0-dist.zip打包全部jar,官网已经不支持全部打包,自己编译而得
CKEditor 3.6 和 CKFinder 2.2 for ASP.NET 二者zip打包下载。 解压即可。
java 打包 目录 文件 zip java 打包 目录 文件 zip java 打包 目录 文件 zip
7zip免费打包工具 可商用 压缩的还不错,最主要是完全免费的