package demo02;
import java.io.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
* 实现批量下载url图片
*/
public class DownImages {
public static void main(String[] args) {
//txt文件路径
String path = "txt文件路径";
try {
//调用按行读取txt文件方法
List<String> list = getFileContext(path);
for (String str : list) {
//调用批量下载方法
downloadPicture(str);
System.out.println("图片-->" + str + "<--下载完成");
}
} catch (Exception e) {
e.printStackTrace();
}
}
private static void downloadPicture(String urlList) {
try {
URL url = new URL(urlList);
//创建数据输入流
DataInputStream dataInputStream = new DataInputStream(url.openStream());
//存储路径
String imageName = "图片存储路径" + urlList.substring(urlList.lastIndexOf("/"));
//创建文件输出流
FileOutputStream fileOutputStream = new FileOutputStream(new File(imageName));
//创建字节数组输出流
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = dataInputStream.read(buffer)) > 0) {
output.write(buffer, 0, length);
}
byte[] context = output.toByteArray();
fileOutputStream.write(output.toByteArray());
dataInputStream.close();
fileOutputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 将txt文件中每一行url,按行读取,存入集合
*
* @param path txt文件路径
* @return
* @throws Exception
*/
public static List<String> getFileContext(String path) throws Exception {
FileReader fileReader = new FileReader(path);
BufferedReader bufferedReader = new BufferedReader(fileReader);
ArrayList<String> list = new ArrayList<>();
String str = null;
//按行循环读取txt文件
while ((str = bufferedReader.readLine()) != null) {
if (str.trim().length() > 2) {
list.add(str);
}
}
return list;
}
}
结果展示
图片-->https://aaa.com/c81d81e4a5c0f76978a28b5cb25a4115.jpg<--下载完成