java(ZipOutputStream)将多个文件打成zip

简介: 当想要将两个文件打包成ZIP文件时,可以使用Java的ZipOutputStream类。

ZipOutputStream是Java中用于创建ZIP文件的类,它是java.util.zip包中的一部分。通过使用ZipOutputStream,可以将多个文件压缩到一个ZIP文件中。

以下是ZipOutputStream的一些主要特性和方法:

  1. 创建ZIP文件ZipOutputStream允许创建一个新的ZIP文件,也可以将数据添加到现有的ZIP文件中。
  2. 添加ZIP条目:使用putNextEntry(ZipEntry entry)方法,可以将文件或目录添加为ZIP文件中的一个条目。ZipEntry对象代表一个ZIP条目,可以是文件或目录。
  3. 写入数据:一旦添加了ZIP条目,可以使用write(byte[] b, int off, int len)方法将数据写入ZIP文件。这样,可以从原始文件中读取数据并将其写入到ZIP文件中。
  4. 关闭条目:在写入完ZIP条目的数据后,使用closeEntry()方法来关闭当前的ZIP条目,以便可以添加下一个条目。
  5. 关闭流:在完成ZIP文件的创建后,记得使用close()方法关闭ZipOutputStream,以确保所有的数据都被正确写入ZIP文件。

以下是一个简单的示例代码,演示如何使用ZipOutputStream创建一个ZIP文件并添加两个文件到其中:

1. import java.io.FileInputStream;
2. import java.io.FileOutputStream;
3. import java.io.IOException;
4. import java.util.zip.ZipEntry;
5. import java.util.zip.ZipOutputStream;
6. 
7. public class ZipOutputStreamExample {
8. public static void main(String[] args) {
9. String file1Path = "/path/to/file1.txt";
10. String file2Path = "/path/to/file2.txt";
11. String zipOutputPath = "/path/to/output.zip";
12. 
13. try (FileOutputStream fos = new FileOutputStream(zipOutputPath);
14. ZipOutputStream zipOut = new ZipOutputStream(fos);
15. FileInputStream fis1 = new FileInputStream(file1Path);
16. FileInputStream fis2 = new FileInputStream(file2Path)) {
17. 
18.             addToZipFile(file1Path, fis1, zipOut);
19.             addToZipFile(file2Path, fis2, zipOut);
20. 
21.             System.out.println("文件成功添加到ZIP文件!");
22.         } catch (IOException e) {
23.             e.printStackTrace();
24.         }
25.     }
26. 
27. private static void addToZipFile(String filePath, FileInputStream fis, ZipOutputStream zipOut)
28. throws IOException {
29. ZipEntry zipEntry = new ZipEntry(filePath);
30.         zipOut.putNextEntry(zipEntry);
31. 
32. byte[] bytes = new byte[1024];
33. int length;
34. while ((length = fis.read(bytes)) >= 0) {
35.             zipOut.write(bytes, 0, length);
36.         }
37. 
38.         zipOut.closeEntry();
39.         fis.close();
40.     }
41. }

下面是一个如何将两个文件打包成一个ZIP文件的示例代码:

1. import java.io.FileInputStream;
2. import java.io.FileOutputStream;
3. import java.io.IOException;
4. import java.util.zip.ZipEntry;
5. import java.util.zip.ZipOutputStream;
6. 
7. public class ZipFilesExample {
8. public static void main(String[] args) {
9. // 两个文件的路径
10. String file1Path = "/path/to/file1.txt";
11. String file2Path = "/path/to/file2.txt";
12. 
13. // ZIP文件的输出路径
14. String zipOutputPath = "/path/to/output.zip";
15. 
16. try (FileOutputStream fos = new FileOutputStream(zipOutputPath);
17. ZipOutputStream zipOut = new ZipOutputStream(fos);
18. FileInputStream fis1 = new FileInputStream(file1Path);
19. FileInputStream fis2 = new FileInputStream(file2Path)) {
20. 
21. // 添加第一个文件到ZIP文件
22.             addToZipFile(file1Path, fis1, zipOut);
23. 
24. // 添加第二个文件到ZIP文件
25.             addToZipFile(file2Path, fis2, zipOut);
26. 
27.             System.out.println("文件成功打包成ZIP文件!");
28.         } catch (IOException e) {
29.             e.printStackTrace();
30.         }
31.     }
32. 
33. private static void addToZipFile(String filePath, FileInputStream fis, ZipOutputStream zipOut)
34. throws IOException {
35. // 创建ZIP条目
36. ZipEntry zipEntry = new ZipEntry(new File(filePath).getName());
37. 
38. // 将ZIP条目添加到ZIP文件
39.         zipOut.putNextEntry(zipEntry);
40. 
41. // 从输入流读取数据并写入ZIP文件
42. byte[] bytes = new byte[1024];
43. int length;
44. while ((length = fis.read(bytes)) >= 0) {
45.             zipOut.write(bytes, 0, length);
46.         }
47. 
48. // 关闭当前ZIP条目
49.         zipOut.closeEntry();
50. 
51. // 关闭输入流
52.         fis.close();
53.     }
54. }

在上面的代码中,需要将/path/to/file1.txt/path/to/file2.txt替换为实际的文件路径,并将/path/to/output.zip替换为您希望生成的ZIP文件的路径。

运行此Java程序后,它将读取这两个文件并将它们打包成名为output.zip的ZIP文件,其中包含这两个文件。请确保路径和文件名正确,并且具有写入ZIP文件的权限

目录
相关文章
|
1天前
|
IDE Java 编译器
使用Java分割PDF文件
使用Java分割PDF文件
6 1
|
1天前
|
存储 监控 Java
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
深入探索Java BIO与NIO输入输出模型:基于文件复制和socket通信
4 0
|
1天前
|
XML Java 定位技术
详尽分享经纬坐标(BLH)数据创建.kml文件小工具设计Java版
详尽分享经纬坐标(BLH)数据创建.kml文件小工具设计Java版
|
2天前
|
Java API 开发者
如何在Java中实现高效的文件读写
如何在Java中实现高效的文件读写
|
2天前
|
Java 机器人 程序员
Java中的文件I/O操作:流、读写和NIO详解
Java中的文件I/O操作:流、读写和NIO详解
|
2天前
|
Java 测试技术 数据库
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
【单文件版本】java SpringBoot 切换不同的运行环境(生产环境、开发环境、测试环境)SpringBoot配置多个不同运营环境
9 0
|
2天前
|
XML Java 数据格式
java删除xml文件内容
java删除xml文件内容
5 0
|
存储 算法 Java
Java解压本地zip文件(zip4j)
Java解压本地zip文件(zip4j)
Java解压本地zip文件(zip4j)
|
Java
JAVA解压Zip格式文件的代码
JAVA解压Zip格式文件的代码
106 0
|
Java
JAVA解压Zip格式文件的代码
JAVA解压Zip格式文件的代码
137 0