import java.io.*; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.tools.zip.*; import java.util.Enumeration;
public class AntZip { // 日志对象 private static Log logger = LogFactory.getLog(AntZip.class); /** * <压缩指定的文件夹> * <该方法只能压缩文件夹> * @param zipDirectory 需要压缩的文件夹全路径 * @param destFile 压缩后的文件存放路径,包括压缩后的文件名 * @see [类、类#方法、类#成员] */ public static void doZip(String zipDirectory, String destFile) { File zipDir = new File(zipDirectory); try { ZipOutputStream zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(destFile))); handleDir(zipDir, zipOut); zipOut.close(); } catch (IOException e) { logger.error(Global.LOG_EXCEPTION_NAME, e); } } /** * <由doZip调用,递归完成目录文件读取> * <功能详细描述> * @param dir 文件 * @param zipOut 压缩输出对象 * @throws IOException * @see [类、类#方法、类#成员] */ private static void handleDir(File dir, ZipOutputStream zipOut) throws IOException { FileInputStream fileIn; File[] files; files = dir.listFiles(); if (files.length == 0) { //如果目录为空,则单独创建之. //ZipEntry的isDirectory()方法中,目录以"/"结尾. zipOut.putNextEntry(new ZipEntry(dir.toString() + "/")); zipOut.closeEntry(); } else { //如果目录不为空,则分别处理目录和文件. for (File fileName : files) { if (fileName.isDirectory()) { handleDir(fileName, zipOut); } else { fileIn = new FileInputStream(fileName); String path = fileName.getPath().substring(fileName.getPath().lastIndexOf("\\") + 1); zipOut.putNextEntry(new ZipEntry(path)); byte[] buf = new byte[1024]; int readedBytes = 0; while ((readedBytes = fileIn.read(buf)) > 0) { zipOut.write(buf, 0, readedBytes); } fileIn.close(); zipOut.closeEntry(); } } } } /** * <解压指定zip文件> * <解压指定zip压缩包到指定目录> * @param unZipfileName 压缩包 * @param destDir 目标目录 * @see [类、类#方法、类#成员] */ @SuppressWarnings("rawtypes") public static void unZip(String unZipfileName, String destDir) { //unZipfileName需要解压的zip文件名 FileOutputStream fileOut; File file; InputStream inputStream; try { ZipFile zipFile = new ZipFile(unZipfileName); for (Enumeration entries = zipFile.getEntries(); entries.hasMoreElements();) { ZipEntry entry = (ZipEntry)entries.nextElement(); file = new File(entry.getName()); if (entry.isDirectory()) { file.mkdirs(); } else { //如果指定文件的目录不存在,则创建之. String path = destDir + "/" + file.getParent(); File parent = new File(path); if (!parent.exists()) { parent.mkdirs(); } inputStream = zipFile.getInputStream(entry); fileOut = new FileOutputStream(destDir + "/" + file); byte[] buf = new byte[1024]; int readedBytes = 0; while ((readedBytes = inputStream.read(buf)) > 0) { fileOut.write(buf, 0, readedBytes); } fileOut.close(); inputStream.close(); } } zipFile.close(); } catch (IOException e) { logger.error(Global.LOG_EXCEPTION_NAME, e); } } }
相关推荐
1. 可以将任意一个目录压缩成一个zip文件,包含密码 2. 可以将任意一个zip文件,加压到一个目录中,该目录位于当前执行文件所在目录的Unzip目录中,目录结构... 兼容三方的压缩解压缩文件。 带有演示程序以及原代码
### VBS 脚本实现 ZIP 文件的压缩与解压缩 在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种...
本文将详细介绍如何使用CZip和CUnzip类来处理文件的压缩与解压缩任务。 首先,我们需要了解CZip和CUnzip类的基本概念。CZip类提供了创建、打开、添加、删除和提取ZIP文件的功能,而CUnzip类则负责从ZIP文件中提取...
标题中的"C++ zip解压缩"指的是使用C++编程语言来处理ZIP文件格式,这是一种广泛使用的文件打包和压缩格式。ZIP文件可以将多个文件和目录组合到一个单一的档案文件中,并且可以进行压缩以节省存储空间。C++库提供了...
在IT领域,尤其是在软件开发中,压缩和解压缩文件是一项常见的任务。`C++`作为一门强大且广泛应用的编程语言,提供了多种库来处理这样的需求。`Zlib`库就是一个非常著名的开源库,专用于数据压缩和解压缩,广泛应用...
对于压缩,可以调用`zip_entry_open()`,`zip_entry_write()`和`zip_entry_close()`来写入新的压缩文件。 在实现过程中,需要注意错误处理,确保程序的健壮性。同时,为了提高效率,可以考虑使用多线程技术对大文件...
unzip.php可能包含了处理ZIP文件解压的逻辑,包括读取ZIP文件、检查密码、解压缩文件到服务器指定位置等步骤。而zip.php则可能负责文件的压缩操作,它需要遍历要打包的文件和目录,创建新的ZIP文件,并将文件添加到...
在处理资源管理时,有时需要将大量素材打包成压缩文件,如ZIP格式,以便于存储和传输。"UE引擎解压缩zip格式文件插件"就是为了应对这种需求而设计的工具。 这个插件主要针对UE4和UE5引擎,允许开发者在游戏中直接...
为了在UCOS上实现ZIP解压,我们可以利用开源库,例如ZIP解压缩工具“unzip”。文件unzip101h可能是包含UNZIP库源代码的一个头文件。 1. 移植UNZIP库:如同ZLIB,我们需要对UNZIP库进行类似的配置和编译过程。这可能...
5. **解压缩文件**:使用`ZipEntry* entry = zip->getEntry(filenameInZip.c_str())`获取ZIP文件中的特定条目,然后使用`entry->extract(outputFilePath.c_str())`将文件解压缩到指定的输出路径。 6. **关闭文件**...
总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...
ZIP文件是一种广泛使用的文件归档格式,它可以将多个文件和目录组合成一个单一的可压缩文件,方便存储和传输。在Java中,我们可以使用`java.util.zip`包中的类来读取和解压ZIP文件。 首先,我们需要了解几个关键的...
只能压缩解压zip格式的,不需要dll或者库文件,核心是HZIP,支持带密码压缩解压。详情参见: http://blog.csdn.net/sunflover454/article/details/48981841
2. **解压缩文件**: - `ZipFile.ExtractToDirectory(string sourceArchiveFileName, string destinationDirectoryName)`: 这个方法可以将ZIP文件解压缩到指定的目录。 - `ZipFile.OpenRead(string ...
`ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压ZIP文件。为了添加密码保护,我们需要在创建`ZipOutputStream`时设置一个密码。 1. **密码保护**:在压缩过程中,可以使用`ZipEntry`对象来...
3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...
本篇文章将深入探讨C语言实现的zip解压缩算法源代码,以及与之相关的技术知识点。 首先,我们要了解zip文件格式。Zip是一种广泛使用的文件压缩标准,它能够将多个文件打包成一个单一的压缩文件,便于存储和传输。在...
在IT行业中,处理压缩文件是常见的任务之一,尤其是在软件开发中。`zlib`是一个广泛使用的开源库,专为数据压缩而设计,它支持多种压缩算法,包括著名的DEFLATE算法,该算法被广泛应用于ZIP文件格式。本篇文章将详细...
解压缩模块负责逆向操作,从ZIP文件中恢复原始数据。文件I/O接口处理与操作系统的交互,如读写文件。命令行接口则提供用户友好的操作界面,如创建、添加、提取ZIP文件等。 4. CInfoZip源码:在提供的文件列表中,...