Java:使用URL下载图片为何图片下载不完全呢?
问题描述
public class Client { public static void main(String[] args) {try { URL url = new URL('http://www.iteye.com/upload/logo/user/1177132/a7159cc1-b11a-3122-9a9d-5183d6c6ba99.jpg'); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(5 * 1000); InputStream inputStream = connection.getInputStream(); byte[] tmp = new byte[1024]; int length; OutputStream outputStream = new FileOutputStream('E:' + File.separator + 'eee.jpg'); while ((length = inputStream.read(tmp)) != -1) {outputStream.write(tmp, 0, length); } outputStream.close(); inputStream.close();} catch (Exception e) { e.printStackTrace();} }}
图片URL:http://www.iteye.com/upload/l...图片有3K,但我下载后图片只有2K而且图片是错误的这是为什么呢?
问题解答
回答1:你把代码改成这样试试
public class Client { public static void main(String[] args) {try { URL url = new URL('http://www.iteye.com/upload/logo/user/1177132/a7159cc1-b11a-3122-9a9d-5183d6c6ba99.jpg'); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestProperty('User-Agent', 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.19 Safari/537.36'); connection.setConnectTimeout(5 * 1000); InputStream inputStream = connection.getInputStream(); byte[] tmp = new byte[1024]; int length; OutputStream outputStream = new FileOutputStream('E:' + File.separator + 'eee.jpg'); while ((length = inputStream.read(tmp)) != -1) {outputStream.write(tmp, 0, length); } outputStream.close(); inputStream.close();} catch (Exception e) { e.printStackTrace();} }}
不添加UA下载下来的文件其实是这样的
outputStream.close()之前,先调用outputStream.flush(),这个方法能强制把输出流缓冲全部写出来。你前边的都没错,就差一步了。
回答3:这是我用你的代码读到的东西。

目标禁止了,为connection添加一个user-agent属性吧。
相关文章:
1. 前端 - Web内部网页登陆控制,怎么通过apache控制?还有其他的控制吗?2. java - SSH框架在添加页面使用ajax进行用户名检测,查询SQL语句出现问题3. javascript - swiper.js嵌套了swiper 初始设置不能向下一个滑动 结束后重新初始4. html5和Flash对抗是什么情况?5. 使用 CSS3 的 Media Query 浏览器会加载其他不同分辨率的 css 文件么6. css - 关于svg使用的问题7. 数据挖掘 - 如何用python实现《多社交网络的影响力最大化问题分析》中的算法?8. 数据结构 - java翻转链表是如何实现的?9. 为什么javascript 18014398501093363 == 18014398501093364 返回ture10. javascript - 给js写的盒子添加css样式,css样式没起作用。
![php-_server-php_self - nginx $_SERVER[’PHP_SELF’] 得到重复路径是什么原因?](http://www.haobala.com/attached/image/news/202309/1123091c0c.png)
网公网安备