Java 把多个文件下载成.zip压缩包
时间: 2023-09-24 16:02:30 浏览: 243
Java 可以通过使用 ZipOutputStream 类来将多个文件压缩成一个 zip 压缩包,具体实现步骤如下:
1. 创建一个 FileOutputStream 对象,并通过 ZipOutputStream 的构造函数创建一个 ZipOutputStream 对象,将 FileOutputStream 对象作为参数传入。
```java
FileOutputStream fos = new FileOutputStream("test.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
```
2. 创建一个 File 对象数组,表示要被压缩的文件列表。
```java
File[] files = new File[] {
new File("file1.txt"),
new File("file2.txt"),
new File("file3.txt")
};
```
3. 遍历文件列表,将每个文件逐个添加到 zip 压缩包中。
```java
for (File file : files) {
FileInputStream fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fis.close();
}
```
4. 关闭 ZipOutputStream 和 FileOutputStream 对象。
```java
zos.close();
fos.close();
```
完整代码示例:
```java
import java.io.*;
import java.util.zip.*;
public class ZipFiles {
public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("test.zip");
ZipOutputStream zos = new ZipOutputStream(fos);
File[] files = new File[] {
new File("file1.txt"),
new File("file2.txt"),
new File("file3.txt")
};
for (File file : files) {
FileInputStream fis = new FileInputStream(file);
ZipEntry ze = new ZipEntry(file.getName());
zos.putNextEntry(ze);
byte[] buffer = new byte[1024];
int len;
while ((len = fis.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fis.close();
}
zos.close();
fos.close();
}
}
```
运行以上代码,就可以将 file1.txt、file2.txt 和 file3.txt 三个文件压缩成一个 test.zip 压缩包。
阅读全文