java.net包下载_Java 下载网络资源

importorg.apache.commons.io.FileUtils;importorg.apache.commons.io.IOUtils;importorg.apache.commons.lang3.StringUtils;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importjava.io.File;importjava.io.FileOutputStream;importjava.io.InputStream;importjava.net.URL;importjava.net.URLConnection;/*** 文件工具类

*

*@authorWiener

* @date 2020/10/22*/

public classFileTools {private static Logger logger = LoggerFactory.getLogger(FileTools.class);/*** 使用第三方jar包 org.apache.commons.io.FileUtils 简捷地下载网络文件

*

*@paramurlStr 资源URL

*@paramdir 存储目录

*@paramfileName 存储文件名

*@return

*/

public static voiddownloadHttpResource(String urlStr, String fileName, String dir) {try{

URL httpUrl= newURL(urlStr);

fileName=getFileName(httpUrl, fileName);

File dirFile= newFile(dir);if (!dirFile.exists()) {

dirFile.mkdirs();

}

FileUtils.copyURLToFile(httpUrl,new File(dir + File.separator +fileName));

}catch(Exception e) {

e.printStackTrace();

}

}/*** 下载网络文件,常规写法,不多说,直接上代码

*

*@paramurlStr 资源URL

*@paramdir 保存目录

*@paramfileName 保存后的文件名,不包括后缀

*@returnvoid*/

public static voiddownloadNetResource(String urlStr, String fileName, String dir) {//下载网络文件

int byteSum = 0;int byteRead = 0;

InputStream inStream= null;

FileOutputStream fos= null;try{

URL url= newURL(urlStr);

URLConnection conn=url.openConnection();

fileName=getFileName(url, fileName);//设置超时间为3秒

conn.setConnectTimeout(3 * 1000);//模拟浏览器访问,防止屏蔽程序抓取而返回403错误

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36");//拿到输入流就相当于拿到了文件

inStream =conn.getInputStream();//文件保存位置

File saveDir = newFile(dir);if (!saveDir.exists()) {

saveDir.mkdir();

}

File file= new File(saveDir + File.separator +fileName);

fos= newFileOutputStream(file);byte[] buffer = new byte[1204];while ((byteRead = inStream.read(buffer)) != -1) {

byteSum+=byteRead;

fos.write(buffer,0, byteRead);

}

logger.info("文件 {} 的大小为 {}", fileName, byteSum);

}catch(Exception e) {

logger.error("下载网络资源 {} 失败,请及时处理,", fileName, e);

}finally{

IOUtils.closeQuietly(inStream,null);

IOUtils.closeQuietly(fos,null);

}

}private staticString getFileName(URL url, String fileName) {if(StringUtils.isBlank(fileName)) {

fileName=Long.toString(System.currentTimeMillis());

}

String urlFileName=url.getFile();

logger.info("网络资源原始名称:{}", urlFileName);if(StringUtils.isNotEmpty(urlFileName)) {

String subfix= urlFileName.substring(urlFileName.lastIndexOf("."));

fileName= fileName +subfix;

}returnfileName;

}public static voidmain(String[] args) {//可以是其它类型的文件,此处以PDF文件为例

String urlStr = "https://papers.xtremepape.rs/ACCA/Diploma-in-Financial-Management/Module-A/Paper-DA1/2002-Dec/da1_2002_dec_a.pdf";

String fileName= "我是文件名";

String netFileName= "下载后的文件名";

String savePath= "F:/Download";//downloadHttpUrl(urlStr, fileName, savePath);

downloadNetResource(urlStr, null, savePath);

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值