Java 批量压缩文件夹
时间: 2024-09-28 19:05:58 浏览: 30
在Java中,可以使用Apache Commons Compress库来批量压缩文件夹。这个库提供了一组工具类,方便地处理各种类型的压缩操作,包括ZIP和GZ等常见格式。以下是一个简单的示例,演示如何使用`ZipArchiveEntry`和`ZipOutputStream`来压缩一个目录:
```java
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipFile;
import org.apache.commons.compress.archivers.zip.ZipOutputStream;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.zip.ZipEntry;
public class FileCompressor {
public static void main(String[] args) {
String sourceDir = "path/to/source/directory";
String zipFilePath = "path/to/output.zip";
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
// 获取源目录的所有文件
Files.walk(sourceDir)
.filter(Files::isRegularFile)
.forEach(file -> {
try {
// 创建Zip档案条目
ZipArchiveEntry entry = new ZipArchiveEntry(file.toPath().relativize(sourceDir).toString());
// 将文件添加到zip流
zos.putNextEntry(entry);
byte[] buffer = new byte[1024];
Files.readAllBytes(file, buffer);
zos.write(buffer);
zos.closeEntry();
} catch (IOException e) {
System.err.println("Error compressing file: " + file);
e.printStackTrace();
}
});
} catch (IOException e) {
System.err.println("Error creating ZIP file: " + zipFilePath);
e.printStackTrace();
}
}
}
```
在这个例子中,你需要将`sourceDir`替换为你想要压缩的实际目录路径,`zipFilePath`则是你希望生成的压缩文件的路径。
阅读全文