Apache Commons Compress 库来将文件夹的每一个文件逐个压缩为独立的Zip 文件
时间: 2024-09-11 10:02:10 浏览: 36
Apache Commons Compress是一个流行的开源库,它为Java开发者提供了一种方便的方式来处理各种类型的压缩和解压操作,包括对文件和目录的压缩。要将一个文件夹下的所有文件逐个压缩为独立的Zip文件,你可以使用这个库的`org.apache.commons.compress.archivers.zip.ZipArchiveEntry`和`org.apache.commons.compress.archivers.zip.ZipOutputStream`类。
以下是一个简单的示例步骤:
1. 添加依赖:首先确保在你的项目中添加了Commons Compress库的依赖。如果你使用的是Maven,可以在pom.xml中加入以下依赖:
```xml
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.20</version> <!-- 更新至最新版本 -->
</dependency>
```
2. 编写代码:使用Java编写一个函数,遍历文件夹并将每个文件压缩到单独的Zip文件中:
```java
import org.apache.commons.compress.archivers.zip.*;
public void compressFolderToZips(String sourceDir, String baseOutputPath) throws IOException {
try (DirectoryStream<Path> directory = Files.newDirectoryStream(Paths.get(sourceDir));
ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(baseOutputPath + "/archive.zip"))) {
for (Path file : directory) {
if (!Files.isDirectory(file)) { // 只处理非目录文件
ZipArchiveEntry archiveEntry = new ZipArchiveEntry(file.toAbsolutePath().toString());
zipOut.putArchiveEntry(archiveEntry);
Files.copy(file, zipOut);
zipOut.closeArchiveEntry();
}
}
}
}
```
在这个例子中,`sourceDir`是你想要压缩的文件夹路径,`baseOutputPath`是目标输出的根目录,`archive.zip`是生成的每个文件的Zip文件名。注意,这里假设源文件夹和目标文件夹在同一系统上,并且有写权限。