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实现方法,其中包括打包,解压
Java中的Zip打包主要涉及到对文件或文件夹进行压缩处理,这是一种常见的数据存储和传输方式。在Java中,我们可以使用内置的`java.util.zip`包来实现这个功能。下面将详细介绍如何使用Java进行Zip打包,以及涉及到的...
ZIP打包是一种常见的文件压缩格式,广泛应用于数据存储、文件传输和软件分发。它通过将多个文件合并到一个单一的ZIP文件中,可以减少文件占用的磁盘空间,提高传输效率,并便于管理。ZIP格式是开放标准,由Phil Katz...
"文件转换为zip打包文件"是常见的操作之一,它能够将多个独立的文件或整个文件夹整合到一个单一的zip文件中。下面将详细阐述zip格式、打包过程以及其在实际应用中的优势。 首先,zip是一种流行的文件压缩格式,由...
windows自动压缩zip打包文件
因项目需求,需要在线生成world文档,并且需要批量生成world,那么就可以用zip打包所有world进行下载,这里提供的是一个简单的demo,如需了解在线生成文件,并打包到zip,可以问我
linux下zip打包shell脚本,可根据具体的内容自己给定参数
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
下面将详细解释如何在Android中进行ZIP打包,并探讨相关知识点。 首先,我们要理解ZIP文件格式。ZIP是一种广泛使用的数据压缩和归档格式,它能够将多个文件和目录打包到一个单一的文件中,方便传输和存储。在...
"网站、APP、社交网站真实头像打包2000个.zip" 是一个包含大量真实用户头像的资源集合,适用于各种应用场景。 这个压缩包包含了2000个真实的用户头像,这些头像是从实际用户中提取或模拟的真实图像,旨在为新注册...
NULL 博文链接:https://xsl2007.iteye.com/blog/737245
Apache ZIP打包工具是一款在IT行业中广泛使用的实用程序,主要用于文件和文件夹的打包与压缩。在Java开发环境中,它尤其重要,因为Java的许多项目都依赖于ZIP格式来组织资源、库和部署构件。以下是对Apache ZIP打包...
Windows下的命令行使用的zip命令,用法与linux用法一致。 后端程序打包文件调用。 如果你装了windows版的Oracle,那你可以在Oracle\product\11.2.0\dbhome_1\BIN目录下找到该zip命令。
- 首先,需要导入`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`类,它们分别用于创建ZIP输出流和表示ZIP包内的每个条目(文件或目录)。 - 使用`File`类遍历指定的目录及其子目录,获取所有需要打包的文件...
linux c ZIP文件打包的实现处理以及XML、ftp处理,具体见源码处理方式。有疑问请留言
7zip jar包资源 sevenzipjbinding-4.65-1.04-rc-extr-only-AllWindows.zip 包含: sevenzipjbinding-AllPlatforms.jar sevenzipjbinding.jar
在ASP中,有时我们需要将多个文件打包成一个ZIP文件以便于传输或存储。这个“asp文件打包成zip组件”可能是一个自定义的ASP组件或者类库,它允许开发者在ASP应用程序中实现文件压缩的功能。 首先,让我们了解一下...
能把散的文件打包成可执行文件,非常好用的工具
Mysql Navicat for windows 连接数据库MySQL软件 Mysql Navicat for windows 连接数据库MySQL软件 Mysql Navicat for windows 连接数据库MySQL软件