Java程序下载txt文件批量下载到本地后压缩成zip包
时间: 2023-12-31 20:05:40 浏览: 133
好的,这个问题需要用到Java的IO流和压缩库。大致思路如下:
1. 读取txt文件中的每一行,获取文件的URL路径。
2. 根据URL路径创建一个URLConnection对象,获取该文件的输入流。
3. 将输入流写入本地的一个文件中,可以用FileOutputStream实现。
4. 遍历完所有的URL路径后,将所有下载的文件压缩成一个zip包,可以用ZipOutputStream实现。
下面是一个简单的实现代码,仅供参考:
```java
import java.io.*;
import java.net.*;
import java.util.zip.*;
public class FileDownloader {
public static void main(String[] args) throws IOException {
String urlFile = "urls.txt"; // 存放URL路径的文件
String downloadDir = "downloads"; // 下载文件存放的目录
String zipFile = "downloads.zip"; // 压缩后的zip包
// 创建下载目录
File dir = new File(downloadDir);
if (!dir.exists()) {
dir.mkdir();
}
// 读取URL路径文件
BufferedReader reader = new BufferedReader(new FileReader(urlFile));
String line;
while ((line = reader.readLine()) != null) {
// 创建URL连接
URL url = new URL(line);
URLConnection conn = url.openConnection();
// 获取文件名
String fileName = url.getFile();
fileName = fileName.substring(fileName.lastIndexOf('/') + 1);
// 创建文件输出流
FileOutputStream fos = new FileOutputStream(new File(downloadDir, fileName));
// 复制输入流到输出流
InputStream is = conn.getInputStream();
byte[] buffer = new byte[4096];
int len;
while ((len = is.read(buffer)) != -1) {
fos.write(buffer, 0, len);
}
fos.close();
is.close();
}
reader.close();
// 压缩下载的文件
FileOutputStream fos = new FileOutputStream(zipFile);
ZipOutputStream zos = new ZipOutputStream(fos);
for (File file : dir.listFiles()) {
byte[] buffer = new byte[4096];
FileInputStream fis = new FileInputStream(file);
zos.putNextEntry(new ZipEntry(file.getName()));
int len;
while ((len = fis.read(buffer)) != -1) {
zos.write(buffer, 0, len);
}
zos.closeEntry();
fis.close();
}
zos.close();
fos.close();
}
}
```
注意:实际应用中需要加入异常处理和错误提示等逻辑。
阅读全文