在Java中,你可以使用java.net.URL
来下载文件,使用java.util.zip
来创建ZIP文件。以下是一个简单的示例,它演示了如何批量下载文件并将它们压缩成ZIP格式:
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class FileDownloader {
public static void main(String[] args) throws IOException {
// 假设这是你的文件URL列表
List<String> fileUrls = new ArrayList<>();
fileUrls.add("http://example.com/file1.txt");
fileUrls.add("http://example.com/file2.txt");
// ... 添加更多文件URL
// 指定ZIP文件的输出路径
String zipFilePath = "output.zip";
// 创建一个ZIP输出流
try (ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
for (String fileUrl : fileUrls) {
// 下载文件并添加到ZIP中
downloadAndAddToZip(fileUrl, zos);
}
}
}
private static void downloadAndAddToZip(String fileUrl, ZipOutputStream zos) throws IOException {
// 创建一个URL对象
URL url = new URL(fileUrl);
// 打开到URL的连接
try (InputStream in = url.openStream()) {
// 获取文件名(这里假设URL的最后一部分是文件名)
String fileName = url.getFile().substring(url.getFile().lastIndexOf('/') + 1);
// 在ZIP文件中创建一个新的ZipEntry
ZipEntry zipEntry = new ZipEntry(fileName);
zos.putNextEntry(zipEntry);
// 将文件内容写入ZIP文件
byte[] buffer = new byte[1024];
int len;
while ((len = in.read(buffer)) > 0) {
zos.write(buffer, 0, len);
}
// 关闭ZipEntry
zos.closeEntry();
}
}
}
这个示例中的FileDownloader
类有一个main
方法,它定义了一个包含文件URL的列表,并指定了输出ZIP文件的路径。然后,它遍历文件URL列表,对于每个URL,它调用downloadAndAddToZip
方法下载文件并将其添加到ZIP文件中。
downloadAndAddToZip
方法首先创建一个URL
对象,然后打开到该URL的连接以获取输入流。然后,它从URL中提取文件名(这里假设URL的最后一部分是文件名),在ZIP文件中创建一个新的ZipEntry
,并将文件内容写入ZIP文件。最后,它关闭ZipEntry
。
请注意,这个示例假设URL的最后一部分是文件名。在实际情况中,你可能需要根据你的URL结构来解析文件名。此外,这个示例没有处理任何网络错误或异常。在生产环境中,你应该添加适当的错误处理和异常处理代码。