Java实现文件压缩到zip档案
"Java将文件压缩成zip的代码示例" 在Java中,可以使用`java.util.zip`包中的类来实现文件或目录的压缩,将它们打包成ZIP格式的文件。以下是一个简单的Java程序,它展示了如何将一组指定的文件压缩到一个ZIP文件中。这个程序首先创建一个`ZipOutputStream`,然后遍历文件列表,为每个文件创建一个`ZipEntry`,并将其写入`ZipOutputStream`。 关键知识点包括: 1. ZipOutputStream: 这是Java中的一个流处理类,用于创建ZIP文件。它继承自`DeflaterOutputStream`,可以用来创建ZIP格式的压缩数据流。在这个例子中,`ZipOutputStream`被用来将多个文件写入到ZIP文件中。 2. BufferedInputStream 和 BufferedOutputStream: 这两个类分别用于提高读取和写入操作的性能。`BufferedInputStream`用于从文件读取数据,`BufferedOutputStream`用于向ZIP文件写入数据,两者通过`FileInputStream`和`FileOutputStream`与实际的文件系统交互。 3. ZipEntry: 表示ZIP文件中的一个条目。当你想要添加一个文件到ZIP文件时,需要创建一个`ZipEntry`对象,设置其名称(对应于ZIP文件内的路径),然后调用`ZipOutputStream`的`putNextEntry()`方法。 4. File 类: Java中的`File`类用于表示文件和目录路径名的抽象表示。在这个例子中,`File`对象用于获取要压缩的文件列表。 5. ArrayList 和 List: `ArrayList`是Java集合框架的一部分,用于存储可变大小的对象数组。在这里,它被用来存储待压缩的文件路径。 6. 文件遍历和压缩流程: - 首先,定义一个包含要压缩文件的路径列表。 - 然后,为每个文件创建一个`File`对象,并使用`FileInputStream`打开文件。 - 接着,创建一个`ZipEntry`,设置其名称为文件路径,并将其添加到`ZipOutputStream`中。 - 最后,读取文件内容,每次读取`BUFFER`字节,然后写入到`ZipOutputStream`,直到文件读取完成。 7. 错误处理: 示例代码中缺少错误处理部分,实际应用中应包含适当的异常处理,如`IOException`,以确保在出现问题时能够优雅地处理。 这个代码片段提供了一个基础的压缩功能,但可能不适用于所有情况,例如处理目录、保持文件权限信息等。在实际开发中,可能需要使用更高级的库,如Apache Commons Compress或Google的Guava库,来提供更全面的文件压缩功能。
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Zip {
static final int BUFFER = 2048;
public static void main(String argv[]) {
try {
BufferedInputStream origin = null;
FileOutputStream dest = new FileOutputStream("E:\\test\\myfiles.zip");
ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(
dest));
byte data[] = new byte[BUFFER];
List<String>item=new ArrayList<String>();
item.add("F:\\工具\\DG2013_Final_1021E.exe");
item.add("F:\\工具\\jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe");
item.add("F:\\QQ截图20130509171303.png");
// File f = new File("E:\\qq");
// File files[] = f.listFiles();
File [] files=new File[item.size()];
for (int i = 0; i < item.size(); i++) {
files[i]=new File(item.get(i));
下载后可阅读完整内容,剩余1页未读,立即下载
- 粉丝: 0
- 资源: 3
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦