package com.b2bwings.common.util;
import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Date;
@Slf4j
public class FileUtil1 {
/**
* 根据文件的链接下载文件
* @param urlString 视频链接
* @param filename C:\Users\708154a.mp4
* @param timeout 连接时长 默认null
* @return
*/
public static boolean downByFileLink(String urlString, String fileName, Integer timeout) {
log.info("下载链接开始时间 = " + DateUtil.getYYYYMMDDHHMMSS(new Date()));
boolean ret = false;
File file = new File(fileName);
try {
if(file.exists()){
file.delete();
}
log.info("文件下载操作");
// 构造URL
URL url = new URL(urlString);
// 打开连接
HttpURLConnection con = (HttpURLConnection)url.openConnection();
if (timeout != null) {
con.setConnectTimeout(timeout);
con.setReadTimeout(timeout);
}
con.connect();
int contentLength = con.getContentLength();
log.info("打印文件的长度" + contentLength);
// 输入流
InputStream is = con.getInputStream();
// 1K的数据缓冲
byte[] bs = new byte[1024];
// 读取到的数据长度
int len;
// 输出的文件流
File file2=new File(file.getParent());
file2.mkdirs();
if(file.isDirectory()){
}else{
file.createNewFile();//创建文件
}
OutputStream os = new FileOutputStream(file);
// 开始读取
while ((len = is.read(bs)) != -1) {
os.write(bs, 0, len);
}
// 完毕,关闭所有链接
os.close();
is.close();
if(contentLength != file.length()){
file.delete();
ret = false;
}else{
ret = true;
}
} catch (IOException e) {
file.delete();
ret = false;
}finally {
log.info("下载链接结束时间 = " + DateUtil.getYYYYMMDDHHMMSS(new Date()));
return ret;
}
}
}
JAVA - 根据文件链接将文件下载保存到本地
最新推荐文章于 2024-04-02 16:55:31 发布