java将多个地址合并成zip文件代码
时间: 2024-11-23 21:38:58 浏览: 4
在Java中,可以使用Apache Commons Compress库(如`org.apache.commons.compress.archivers.zip`)来创建和合并多个文件到一个ZIP文件。以下是一个简单的示例代码,展示了如何将多个文件添加到ZIP文件中:
```java
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream;
import org.apache.commons.compress.utils.IOUtils;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import java.io.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class ZipFiles {
public static void main(String[] args) {
String sourceDirectory = "path/to/source/directory"; // 源目录路径
String zipFilePath = "path/to/output/combined.zip"; // 输出ZIP文件路径
try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(sourceDirectory + "/file1.txt"));
ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
// 获取源目录下的所有文件
File[] files = new File(sourceDirectory).listFiles();
for (File file : files) {
if (!file.isDirectory()) { // 只处理文件,跳过子目录
Path filePathInArchive = Paths.get(file.getName()); // 生成内部档案路径
byte[] buffer = new byte[4096];
int readBytes;
ZipEntry entry = new ZipEntry(filePathInArchive.toString());
// 添加入口到ZIP
out.putNextEntry(entry);
// 将文件内容读取并写入 ZIP
InputStream fis = new BufferedInputStream(new FileInputStream(file));
while ((readBytes = fis.read(buffer)) != -1) {
out.write(buffer, 0, readBytes);
}
// 关闭当前条目
out.closeEntry();
// 关闭输入流
IOUtils.closeQuietly(fis);
}
}
} catch (IOException e) {
System.err.println("Error occurred while zipping files: " + e.getMessage());
}
}
}
```
在这个例子中,你需要替换`sourceDirectory`和`zipFilePath`为你实际的源文件夹路径和想要保存的ZIP文件路径。
阅读全文