网站首页 > java教程 正文
前言:
在做爬虫的时候,有时候需要下载爬到连接的URL。
比如:String url = “http://www.kaigejava.com/uplode/pdf/xxxxx.pdf";
如果使用File file = new File(url );
发现file处理后成了:http:\www.kaigejava.com\uplode\pdf\xxxxx.pdf
然后使用file的判断方法。提示获取不到。
那么使用java的file对象怎么获取网络资源?
code:
代码如下:
publicclass FileTests {
publicstaticvoid main(String[] args) throws Exception {
String fileName = "d96c6dcfda2559c5865db89388d28cbf.pdf";
String fileUrl = "http://10.10.10.242:82/xxx/files/d96c6dcfda2559c5865db89388d28cbf.pdf";
String downPath = "C:\\Users\\kaigejava\\Desktop\\xss";
downUrlTxt(fileName,fileUrl,downPath);
}
publicstaticvoid downUrlTxt(String fileName,String fileUrl,String downPath){
File savePath = new File(downPath);
if (!savePath.exists()) {
savePath.mkdir();
}
String[] urlname = fileUrl.split("/");
intlen = urlname.length-1;
String uname = urlname[len];//获取文件名
try {
File file = new File(savePath+"/"+uname);//创建新文件
if(file!=null && !file.exists()){
file.createNewFile();
}
OutputStream oputstream = new FileOutputStream(file);
URL url = new URL(fileUrl);
URLConnection uc ;
uc = url.openConnection();
uc.addRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
uc.setDoInput(true);//设置是否要从 URL 连接读取数据,默认为true
uc.connect();
InputStream iputstream = uc.getInputStream();
System.out.println("file size is:"+uc.getContentLength());//打印文件长度
byte[] buffer = newbyte[4*1024];
intbyteRead = -1;
while((byteRead=(iputstream.read(buffer)))!= -1){
oputstream.write(buffer, 0, byteRead);
}
oputstream.flush();
iputstream.close();
oputstream.close();
} catch (Exception e) {
System.out.println("读取失败!");
e.printStackTrace();
}
System.out.println("生成文件路径:"+downPath+fileName);
}
}
下载提示:
需要注意的:
如果提示:Server returned HTTP response code: 403 for URL
这个错误。
有可能是服务器拒绝了java直接访问。
所以需要使用下面选中的部分。伪装成浏览器请求。
如下:
百科:
User-Agent:
如果您觉得有用请分享给您的朋友。
【欢迎关注微信公众号:凯哥java】
开心一刻:
1、老师:“生铁是铁,熟铁是铁,铁锤一敲铁打铁。谁能对下联?”
小明:“男人是人,女人是人,床板一响人造人。”
老师:“滚出去!”
2、老师:“都是一个老师教的,为什么人家就学得好呢?”
小明:“因为不是一个父母生的。”
老师:“滚出去!”
3、初中开学典礼校长谈早恋。
校长:早恋犹如青色的苹果,过早的品尝只会让你感到苦涩。
小明:苹果熟透了还能轮到我么。
校园:快滚,不然我开除你!
4、老师:为什么鸡蛋是圆形的,不是方形的呢?
小明:老师,你有考虑过母鸡的感受吗?
老师!@#!@#
- 上一篇: 优秀Java程序员应该知道的20个实用开源库
- 下一篇: 初识Java(初识java的分析总结)
猜你喜欢
- 2024-09-10 带你入门Java之每日3分钟Java——初识Java
- 2024-09-10 述说Java与.Net (Core)。(.net java区别)
- 2024-09-10 针对Java开发大神而言,这9个网站必不可少
- 2024-09-10 Java:Java快速入门(java快速入门教程)
- 2024-09-10 windows系统的服务器快速部署java项目环境地址
- 2024-09-10 Java基础,Java方法调用、方法重载、参数及Java的递归
- 2024-09-10 初识Java(初识java的分析总结)
- 2024-09-10 优秀Java程序员应该知道的20个实用开源库
- 2024-09-10 GitHub精选 | 一个小而全的Java工具类库
- 2024-09-10 java如何实现获取客户端ip地址?若不会,我便手把手教你「详细」
你 发表评论:
欢迎- 最近发表
-
- java8的stream使用小示例(java stream的用法)
- Java 中的 Lambda 表达式深入解析:从语法糖到高阶函数
- 实战解析Android架构设计原则(android的架构)
- 搭建mcp服务器用java17,可是项目开发用的是java8怎么实现?
- Java Stream:集合处理的api(java集合流操作)
- Java 8新特性全面剖析:让编程变得更简单优雅
- Java 8新特性全面解析与最佳实践:掌握未来编程的艺术
- Java 8日期时间API新特性揭秘与深度解析
- Java 8 Stream API 详解(java.stream)
- Java机器学习库(Java ML)(二、聚类)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)