信息大爆炸时代,难免要做数据采集,网络有很多图片、文档、音乐、视频,通过此方法可以很方便地把网强上的文件下载到本地,现在附上java代码
package net.mbzj.utils;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class FileDownloader {
public static String downloadFile(String fileUrl, String targetDirectory) throws IOException {
String fileName = null;
// 文件URL过滤,有些七牛连接后面会带?
if(fileUrl.indexOf("?")>0) {
String img[] = fileUrl.split("\\?");
fileUrl = img[0];
}
URL url = new URL(fileUrl);
try {
InputStream in = url.openStream();
// 创建可读通道
ReadableByteChannel readableByteChannel = Channels.newChannel(in);
// 目标文件路径
Path targetPath = Paths.get(targetDirectory, getFileNameFromUrl(url));
// 创建目标目录(如果不存在)
Files.createDirectories(Paths.get(targetDirectory));
FileOutputStream out = new FileOutputStream(targetPath.toFile());
out.getChannel().transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
//返回文件名
fileName = targetPath.getFileName().toString();
}catch(Exception e) {
e.printStackTrace();
}
return fileName;
}
private static String getFileNameFromUrl(URL url) {
String fileName = url.getFile();
int lastSlashIndex = fileName.lastIndexOf('/');
return fileName.substring(lastSlashIndex + 1);
}
public static void main(String[] args) {
String imageUrl = "https://img-home.csdnimg.cn/images/20201124032511.png";
String targetDir = "D:\\weixin\\pics";
try {
downloadFile(imageUrl, targetDir);
} catch (IOException e) {
e.printStackTrace();
}
}
}
此方法是通过java代码把网络上的一张图片下载到本地D盘weixn\\pic文件夹下