public boolean downZipOrder(String sourceUrl,String purposeUrl){
boolean flag=false;
// 初始化支持多级目录压缩的ZipMultiDirectoryCompress
ZipMultiDirectoryCompress zipCompress = new ZipMultiDirectoryCompress();
// 压缩目录,可以指向一个文件
// String directory = ExcelUtil.DOC_DIR ;
// 生成的压缩文件
// String destFile = "d:/all.zip";
// 默认的相对地址,为根路径
long start = System.currentTimeMillis();
ZipOutputStream zos = null;
try {
// 创建一个Zip输出流
zos = new ZipOutputStream(new FileOutputStream(purposeUrl));
zos.setEncoding("GBK");
// 启动压缩进程
zipCompress.startCompress(zos, sourceUrl);
flag=true;
} catch (FileNotFoundException e) {
flag=false;
e.printStackTrace();
} finally {
try {
if (zos != null)
zos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println(System.currentTimeMillis() - start);
return flag;
}
public void startCompress(ZipOutputStream zos, String directory) {
startCompress(zos, StringUtils.EMPTY, directory);
}
public void startCompress(ZipOutputStream zos, String oppositePath, String directory) {
File file = new File(directory);
if (file.isDirectory()) {
// 如果是压缩目录
File[] files = file.listFiles();
for (int i = 0; i < files.length; i++) {
File aFile = files[i];
if (aFile.isDirectory()) {
// 如果是目录,修改相对地址,apache解决了中文字符乱码问题。
String newOppositePath = oppositePath + aFile.getName() + "/";
// 创建目录
compressDirectory(zos, oppositePath, aFile);
// 进行递归调用
startCompress(zos, newOppositePath, aFile.getPath());
} else {
// 如果不是目录,则进行压缩
compressFile(zos, oppositePath, aFile);
}
}
} else {
// 如果是压缩文件,直接调用压缩方法进行压缩
compressFile(zos, oppositePath, file);
}
}
public void compressFile(ZipOutputStream zos, String oppositePath, File file) {
// 创建一个Zip条目,每个Zip条目都是必须相对于根路径
ZipEntry entry = new ZipEntry(oppositePath + file.getName());
InputStream is = null;
try {
entry.setUnixMode(644);
// 将条目保存到Zip压缩文件当中
zos.putNextEntry(entry);
// 从文件输入流当中读取数据,并将数据写到输出流当中.
is = new FileInputStream(file);
int length = 0;
byte[] buffer = new byte[BUF_SIZE];
while ((length = is.read(buffer, 0, BUF_SIZE)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
if (is != null)
is.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
public void compressDirectory(ZipOutputStream zos, String oppositePath, File file) {
// 压缩目录,这是关键,创建一个目录的条目时,需要在目录名后面加多一个"/"
ZipEntry entry = new ZipEntry(oppositePath + file.getName() + "/");
try {
entry.setUnixMode(755);
zos.putNextEntry(entry);
zos.closeEntry();
} catch (IOException e) {
e.printStackTrace();
}
}
分享到:
相关推荐
6. **目录操作**:为了将整个目录及其内容打包或解压,需要遍历目录结构,获取所有子文件和子目录。这通常涉及到递归函数或者文件系统遍历API的使用。 7. **错误处理**:在编程中,错误处理是必不可少的。在处理...
ASP(Active Server ...总的来说,"asp文件打包成zip组件"是ASP开发者用来便捷地处理文件打包需求的一种工具,它简化了在服务器端创建ZIP文件的过程,并且能够集成到现有的ASP应用程序中,提高了开发效率和用户体验。
在IT行业中,生成Excel文件和将其打包成ZIP文件是一项常见的任务,特别是在数据处理、报表生成或文件传输等场景。这个任务通常涉及到编程语言中的文件操作和压缩库的使用。以下是对给定标题和描述中涉及知识点的详细...
考虑到大型Excel文件可能导致内存溢出或者浏览器下载速度慢,这个库提供了一个巧妙的解决方案,即将Excel文件打包成ZIP格式进行下载。 `laravel-excel-zip`的主要功能在于,它允许开发者在内存管理可控的情况下,将...
这样的工具可能支持多种图像格式,并且具有预览功能,让用户无需先解压整个文件就能查看图片。 总的来说,ATZ文件打包工具是一个用于处理ATZ格式的实用程序,它具备打包和解包的功能,适合处理包含各种类型数据的...
描述提到,“只需将.gitignore和7zip.bat两个文件复制到需要打包的目录下,执行7zip.bat就能打包成azkaban需要的zip包”。这里包含几个关键知识点: 1. **.gitignore**:这是一个Git版本控制系统中的文件,用于指定...
这是因为每次打包一个文件时,Java只需要处理较少的数据,而打包整个文件夹可能需要递归遍历所有子文件和子目录,这会增加计算量和时间。 6. `ant.jar`: 这是一个Ant构建工具的库文件,Ant是Apache组织提供的一个...
本资料"Jenkins一键打包.zip"提供了关于如何配置Jenkins进行Unity3D项目自动打包的详细流程和相关文件。 首先,我们需要理解Jenkins的一键打包概念。一键打包是指通过预设的脚本或配置,在点击一个按钮后自动完成...
"文件转换为zip打包文件"是常见的操作之一,它能够将多个独立的文件或整个文件夹整合到一个单一的zip文件中。下面将详细阐述zip格式、打包过程以及其在实际应用中的优势。 首先,zip是一种流行的文件压缩格式,由...
ZIP是一种常见的文件压缩格式,它允许将多个文件和目录打包成一个单一的可压缩文件。在C++中解压ZIP文件,通常需要借助第三方库,如 zlib 库(提供基础的压缩和解压缩功能)和 libzip 库(提供对ZIP文件的高级操作...
此代码会创建一个名为 `output.zip` 的 ZIP 文件,包含 `file1.txt`、`file2.jpg` 和名为 `folder` 的整个目录及其内部文件。 标签中的"同时打包多个文件"和"压缩文件"指的是上述过程,即一次操作中处理多个文件并...
在Java编程环境中,打包文件或文件夹到zip压缩包是一项常见的任务,这通常涉及到I/O操作和文件处理。`ZIPUtil`可能是一个自定义的工具类,用于简化这个过程。以下是一些关于如何在Java中实现这个功能的关键知识点: ...
在PHP编程环境中,`ZIP`打包支持是一项非常实用的功能,它允许开发者将多个文件或整个目录打包成一个`.zip`文件,便于传输、存储或备份。`PHP ZIP`扩展是实现这一功能的关键,它提供了丰富的函数和类来处理`.zip`...
添加单个文件或整个目录,包括其下的所有子文件,可以使用`addFromString()`或`addFile()`。对于多级目录,需要递归处理。 ```php function addFilesToZip($dir, $rootPath, $zip) { $files = scandir($dir); ...
标题中的"aa.zip_LABVIEW打包文件_读取文件"指的是一个LabVIEW项目被打包成的zip文件,其中包含了与读取文件相关的功能。下面我们将深入探讨LabVIEW打包文件的原理以及如何处理读取文件的路径问题。 首先,LabVIEW...
ZIP是一种常用的文件压缩格式,它能将多个文件或目录打包成一个单一的压缩文件,便于存储和传输。在Java中,我们可以使用`java.util.zip`包中的类来处理ZIP文件。 1. **读取和解压ZIP文件**: - 使用`java.io....
6. **流式处理**:在某些情况下,我们可能需要在不完全加载整个文件到内存的情况下进行ZIP打包,这时就需要使用流式处理。例如,可以读取文件的一部分,压缩后写入ZIP文件,然后再继续读取下一部分,直到文件结束。 ...
4. 最后,将打包好的资源文件替换到游戏的安装目录,覆盖原有的文件,使改动生效。 在使用rez工具时,需要注意版权问题,因为擅自修改游戏内容可能会违反游戏的用户协议。此外,由于rez工具涉及到游戏内部资源的...
- **压缩任务**:Ant中的`zip`任务可以用于创建Zip文件,你可以指定要打包的文件和目录,甚至可以设置压缩级别。 - **解压缩任务**:使用`unzip`任务可以解压缩Zip文件到指定的目标目录。 - **Ant脚本**:Ant通过...
本项目打包文件“thinkphp5项目打包.zip”包含了一个完整的ThinkPHP5线上项目,其中涵盖了Ajax无刷新分页和多条件搜索的实现,是学习和理解TP5框架及Ajax技术的良好实践案例。 一、ThinkPHP5框架简介 ThinkPHP5的...