zipoutputstream压缩文件
时间: 2023-10-02 17:08:43 浏览: 98
ZipOutputStream是Java中一个用于压缩文件的类。它可以将多个文件或文件夹压缩成一个zip文件,并且可以设置压缩级别、密码等选项。
下面是一个简单的例子,展示如何使用ZipOutputStream将一个文件夹中的所有文件压缩成一个zip文件:
```java
import java.io.*;
import java.util.zip.*;
public class ZipDirectory {
public static void main(String[] args) throws IOException {
String inputFolder = "/path/to/input/folder";
String outputZipFile = "/path/to/output/zipfile.zip";
// 创建输出流
FileOutputStream fos = new FileOutputStream(outputZipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
// 遍历文件夹中的所有文件,并逐一添加到ZipOutputStream中
File folder = new File(inputFolder);
for (File file : folder.listFiles()) {
if (!file.isDirectory()) {
addToZipFile(file, zos);
}
}
// 关闭输出流
zos.close();
fos.close();
}
private static void addToZipFile(File file, ZipOutputStream zos) throws IOException {
FileInputStream fis = new FileInputStream(file);
ZipEntry zipEntry = new ZipEntry(file.getName());
zos.putNextEntry(zipEntry);
byte[] bytes = new byte[1024];
int length;
while ((length = fis.read(bytes)) >= 0) {
zos.write(bytes, 0, length);
}
zos.closeEntry();
fis.close();
}
}
```
在上面的例子中,我们首先创建了一个ZipOutputStream,然后遍历指定的文件夹中的所有文件,并使用addToZipFile()方法将每个文件逐一添加到ZipOutputStream中。在addToZipFile()方法中,我们首先创建一个ZipEntry对象,指定要添加到zip文件中的文件名,然后读取文件的内容,并将其写入ZipOutputStream中。最后,我们关闭ZipEntry和FileInputStream。
需要注意的是,ZipOutputStream只能压缩文件,不能压缩文件夹本身。如果要压缩整个文件夹,必须遍历文件夹中的所有文件,并将它们逐一添加到ZipOutputStream中。
阅读全文