import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
public class Zip2Utils {
private static final int BUF_SIZE = 1024 * 1024;
public static void main(String[] args){
Collection<File> resFileList = new ArrayList<File>();
resFileList.add( new File("d://temp//1.txt"));
resFileList.add( new File("d://temp//2.txt"));
File file3 = new File("d://temp//test.zip");
try {
//压缩文件
Zip2Utils.zipFiles(resFileList, file3, "this is test");
//解压缩文件
Zip2Utils.upZipFile(file3, "d://ddd");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void zipFiles(Collection<File> resFileList , File zipFile ,String comment) throws IOException{
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile),BUF_SIZE));
for(File file:resFileList){
Zip2Utils.zipFile(file, out, "");
}
out.close();
}
public static void zipFile(File resFile, ZipOutputStream zipout, String rootpath) throws IOException{
rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator) + resFile.getName();
System.out.println(rootpath);
if (resFile.isDirectory()) {
File[] fileList = resFile.listFiles();
for (File file : fileList) {
zipFile(file, zipout, rootpath);
}
} else {
byte buffer[] = new byte[BUF_SIZE];
BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile), BUF_SIZE);
zipout.putNextEntry(new ZipEntry(rootpath));
int realLength;
while ((realLength = in.read(buffer)) != -1) {
zipout.write(buffer, 0, realLength);
}
in.close();
zipout.flush();
zipout.closeEntry();
}
}
/**
* 解压缩一个文件
*
* @param zipFile 压缩文件
* @param folderPath 解压缩的目标目录
* @throws IOException 当压缩过程出错时抛出
*/
public static void upZipFile(File zipFile, String folderPath) throws IOException {
File targetFolder = new File(folderPath);
if(!targetFolder.exists()){
targetFolder.mkdir();
}
ZipFile zf = new ZipFile(zipFile);
for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
ZipEntry entry = ((ZipEntry) entries.nextElement());
InputStream in = zf.getInputStream(entry);
OutputStream out = new FileOutputStream(folderPath + File.separator + entry.getName());
byte buffer[] = new byte[BUF_SIZE];
int realLength;
while ((realLength = in.read(buffer)) > 0) {
out.write(buffer, 0, realLength);
}
in.close();
out.close();
}
}
}
分享到:
相关推荐
这些库提供了读取、写入和解压缩ZIP文件的功能。`zip_utils_src`可能包含了这些库的一个实现,或者是一个自定义的解决方案,用于创建和管理ZIP档案。 ZLib是一个广泛使用的压缩库,主要用于GZIP和DEFLATE算法。...
"zip_utils_src"这个压缩包很可能是包含了一些用于操作Zip文件的源代码,可能包括了上述库的实现或封装。 使用C++ Zip库的主要步骤如下: 1. **初始化**:首先,需要初始化库,这通常涉及到打开一个现有的Zip文件...
首先,`zip.h`和`zip.cpp`文件通常包含了创建、更新和管理ZIP压缩文件的相关函数和类定义。ZIP是一种广泛使用的文件格式,可以将多个文件和目录打包成一个单一的可移植文件,通常用于数据传输和存储。在C++中,为了...
zip util 缩解压缩源码以及 VS2015 示例... https://www.codeproject.com/Articles/7530/Zip-Utils-Clean-Elegant-Simple-Cplusplus-Win
zip的压缩与解压程序 zip.h zip.cpp unzip.h unzip.cpp 文件来源:http://www.codeproject.com/Articles/7530/Zip-Utils-clean-elegant-simple-C-Win
2. 添加文件:逐个添加要压缩的文件到ZIP档案,通常需要提供源文件路径和ZIP内的文件名。 3. 设置压缩级别:可以选择不同的压缩级别以平衡速度和压缩比。 4. 提交更改:完成添加后,提交更改到ZIP文件。 5. 错误处理...
Utils_cryptography_zip_ 是一个与密码学和zip压缩相关的库,它主要用于加密和解密数据。这个库结合了密码学的原理与ZIP文件格式的处理,以提供安全的数据存储和传输解决方案。在本文中,我们将深入探讨这个库的核心...
Utils工具集包含了读写文件、创建删除目录、搜索文件、压缩解压等功能,使得对文件系统的操作变得简单直观,降低了出错概率。 6. **网络通信** 针对网络编程,Utils提供了基础的HTTP请求、TCP/IP套接字通信、...
描述中同样提到了“Alexandria_Upload_Utils-0.1.1-py2.py3-none-any.whl.zip”,这再次确认了这是个包含Python库的压缩文件。通常,这样的文件会在下载后通过`pip`等工具进行安装,以便在Python环境中使用。 标签...
标题"AISTLAB_utils-0.1-py2.py3-none-any.whl.zip"指出这是一个包含Python库"AISTLAB_utils"的压缩文件,版本为0.1。".whl"是Python的wheel格式,它是一种预编译的Python软件包,用于简化安装过程,特别是对于依赖C...
`global_utils_88-0.0.1.tar.gz` 是该库的打包文件,采用了 `.tar.gz` 的压缩格式。这种格式结合了 tar(用于打包多个文件)和 gzip(用于压缩)两种工具,是 Linux 和 Unix 系统中常见的文件打包和压缩方式。在 ...
要使用这个库,你需要首先解压 AISTLAB_utils-0.1.2-py2.py3-none-any.whl.zip 文件,然后在命令行中使用 `pip install AISTLAB_utils-0.1.2-py2.py3-none-any.whl` 命令进行安装(确保你有正确的路径)。...
总结来说,"Alexandria_Upload_Utils-0.1.2-py2.py3-none-any.whl.zip"是一个Python库的分发文件,采用Wheel格式并以ZIP压缩,支持Python 2和3,无特定平台依赖。通过正确的解压和使用pip,开发者可以便捷地在他们的...
在标题中提到的“yaffs2utils-master.zip”是一个包含YAFFS2工具集的压缩文件,主要针对Ubuntu操作系统。这个工具集可以帮助用户处理YAFFS2文件系统,特别是解压和操作由海思(HiSilicon)的mkyaffs2image610工具...
2. **解压缩**:可以将ZIP文件中的内容解压到指定的目录。同样,通过API接口,开发者可以指定ZIP文件和解压目标位置,实现解压缩操作。 3. **API 设计**:Zip Utils 的API设计遵循了C++的习惯,可能是面向对象或者...
本项目涉及的是一个使用C/C++语言实现的zip压缩与解压缩程序。这个程序允许开发者在不依赖第三方库的情况下,对文件进行压缩和解压缩操作,提高了程序的自给自足性和灵活性。 首先,我们来详细了解一下ZIP文件格式...
- **简单易用的API**:Ionic.Utils.Zip提供了直观的C#接口,使得创建和操作ZIP文件变得轻松。例如,`ZipFile`类用于读写ZIP文件,`ZipEntry`类代表ZIP文件中的单个条目。 - **流式处理**:支持使用流进行压缩和解...