从url中下载资源(目前测试只有照片,文件类的没有进行测试)
首先:是工具类:
public class DownLoadUtils {
/**
* 从网络Url中下载文件
*
* @param urlStr url路径
* @param fileName 文件的名称
* @param savePath 保存的路径
* @throws IOException
*/
public static void downLoadFromUrl(String urlStr, String fileName, String savePath) throws IOException {
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//设置超时间为3秒
conn.setConnectTimeout(3 * 1000);
//防止屏蔽程序抓取而返回403错误
conn.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
//得到输入流
InputStream inputStream = conn.getInputStream();
//获取自己数组
byte[] getData = readInputStream(inputStream);
//文件保存位置
File saveDir = new File(savePath);
if (!saveDir.exists()) {
saveDir.mkdir();
}
File file = new File(saveDir + File.separator + fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(getData);
if (fos != null) {
fos.close();
}
if (inputStream != null) {
inputStream.close();
}
System.out.println("info:" + url + " download success");
}
/**
* 从输入流中获取字节数组
*
* @param inputStream
* @return
* @throws IOException
*/
public static byte[] readInputStream(InputStream inputStream) throws IOException {
byte[] buffer = new byte[1024];
int len = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream.read(buffer)) != -1) {
bos.write(buffer, 0, len);
}
bos.close();
return bos.toByteArray();
}
}
测试类为:
@RunWith(SpringRunner.class)
@SpringBootTest
public class DownLoadUrl { @Test
public void downLoadUrlTest() {
//这一部分代码时候将url存储在文本中.然后读取文本
// File file=new File("C:\\Users\\yejianan\\Desktop\\chuanda.txt");
// BufferedReader reader=null;
// String temp=null;
// int line=1;
// PrintWriter pw = null;
// try{
// reader=new BufferedReader(new FileReader(file));
// while((temp=reader.readLine())!=null){
// //获取特定的url的字符串
// //int index=temp.indexOf('h');
// //String res=temp.substring(index);//res表示url
// System.out.println("line"+line+":"+temp);
// try{
// downLoadFromUrl(temp,line+".jpg","C:\\Users\\yejianan\\Desktop\\chuanda");
// }catch (Exception e) {
// // TODO: handle exception
// System.out.println(e.toString());
// }
// line++;
// }
// }
// catch(Exception e){
// e.printStackTrace();
// }
// finally{
// if(reader!=null){
// try{
// reader.close();
// }
// catch(Exception e){
// e.printStackTrace();
// }
// }
// }
// }
String urlstr = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1569842044752&di=e4815e7d6d558d62a21acd4396d7eba6&imgtype=0&src=http%3A%2F%2Fphoto16.zastatic.com%2Fimages%2Fphoto%2F9085%2F36339245%2F1315565987101.jpg"; try {
downLoadFromUrl(urlstr, "3.jpg", "D:\\data\\img");
} catch (IOException e) {
e.printStackTrace();
}
}
}
以上这个照片可以直接从网络中下载
从url中下载资源(目前测试只有照片,文件类的没有进行测试)的更多相关文章
- Java获取URL中的顶级域名domain的工具类
方式一: import java.net.MalformedURLException; import java.net.URL; import java.util.Arrays; import jav ...
- js获取页面url中的各项值
一. 通过window.location获取各项参数 1.获取页面完整的url url = window.location.href; 2.获取页面的域名 host = window.location ...
- APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法
用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态 ...
- [工具类]获取url中参数列表
写在前面 在项目中经常用到解析url中参数的逻辑,今天先下载就自己封装了一个方法,方便以后使用的时候,信手拈来.当然这里给出的方法是针对常见的url参数类型的,对于重写url,或者路由格式的不考虑. ...
- post可以直接把get请求代入到目标url中
Feigong --非攻 非攻 取自<秦时明月>--非攻,针对不同情况自由变化的武器 Feigong,针对各种情况自由变化的mysql注入脚本 Feigong,In view of the ...
- Js把URL中的参数解析为一个对象
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8" /> <title&g ...
- 对 url 中含有的中文进行转码操作
对 url 中含有的中文进行转码操作 一般情况下,将带有中文的 url 拷贝到开发工具,开发工具都会有相应的转码(自动转码), 现在大部分的浏览器也可以对含有中文的 url 进行转码(自动转码) 情景 ...
- js 获取url中的参数 修改url 参数 移除url参数
js 获取url中的参数 修改url 参数 移除url参数 var jsUrlHelper = { getUrlParam : function(url, ref) { var str = " ...
- 关于Retrofit网络请求URL中含有可变参数的处理
开题:在此默认各位看官对Retrofit.以及Okhttp已经有过一定的了解及应用,所以今天我们不谈基础入门的东西,今天我们谈在Retrofit请求接口管理类中URL参数含有动态参数的处理方式.一般我 ...
随机推荐
- pdf转换成jpg不清晰怎么办
用Photoshop打开pdf文件,然后用“文件”-“另存为”“JPG”.
- adb devices命令链接设备失败 解决办法
使用adb devices命令链接设备失败 1,检查adb的环境配置是否存在问题 参见我的博客(sdk配置):https://www.cnblogs.com/changpuyi/p/9459025.h ...
- PHP设计模式 - 备忘录模式
备忘录模式又叫做快照模式(Snapshot)或 Token 模式,备忘录模式的用意是在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样就可以在合适的时候将该对象恢复到原先 ...
- 【剑指offer】1+….+n,不能使用相关关键字
题目描述 求1+2+3+...+n,要求不能使用乘除法.for.while.if.else.switch.case等关键字及条件判断语句(A?B:C). 分析:可以使用递归! class Soluti ...
- Python 入门(2):数据类型
一 Number(数字) 1.1 数字类型的创建 a = 10 b = a b = 5 print(a) 10 print(b) 5 1.2 Number 类型转换 a = 5.2 b = 5 c = ...
- RabbitMq 概述
RabbitMQ是实现了高级消息队列协议(Advanced Message Queueing Protocol , AMQP)的开源消息代理软件(亦称面向消息的中间件). 1.AMQP协议 Rocke ...
- 20、Outer Apply 和 Cross Apply
1.場合 select...caseが複雑の時 2.運用方法 SELECT * FROM stu CROSS APPLY ( --like inner join * FROM score WHERE ...
- oracle学习笔记(三)
索引: drop table test1 purge; drop table test2 purge; drop table test3 purge; drop table t purge; crea ...
- JAVA9之后废弃newInstance()方法
JAVA9之后废弃newInstance()方法 根据JAVA11的API 我们可以看见反射中的newInstance()方法不推荐使用了,用 clazz.getDeclaredConstructor ...
- 常用方法装windows
1.通过制作启动盘来进行安装 (1)简单的启动盘制作工具 通过百度”启动盘“,会发现有很多制作启动盘的工具. 这些工具操作都比较简单,易于上手,功能强大,不仅能装系统,而且还能维修. 具体使用方法,官 ...