已知文件的url,想要下载该文件到指定目录下的代码如下
/**
* 根据url下载文件到指定路径
* @param urlPath url
* @param downloadPath 指定路径
*/
@SneakyThrows(Exception.class)
public static void downloadFileByUrl(String urlPath, String downloadPath) {
URL url = new URL(urlPath);
// 打开连接
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
// 获取输入流
try (InputStream inputStream = connection.getInputStream()) {
// 获取文件名
String fileName = Paths.get(url.getPath()).getFileName().toString();
// 拼接保存路径
Path localFilePath = Paths.get(downloadPath, fileName);
// 如果目标文件夹不存在,则创建它
if (!Files.exists(localFilePath.getParent())) {
Files.createDirectories(localFilePath.getParent());
}
// 使用 FileOutputStream 将输入流保存到文件
try (FileOutputStream outputStream = new FileOutputStream(localFilePath.toFile())) {
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
log.info("File downloaded successfully to: {}", localFilePath);
} finally {
// 关闭连接
connection.disconnect();
}
}