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而且圖片是錯(cuò)誤的這是為什么呢?
問題解答
回答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下載下來(lái)的文件其實(shí)是這樣的
outputStream.close()之前,先調(diào)用outputStream.flush(),這個(gè)方法能強(qiáng)制把輸出流緩沖全部寫出來(lái)。你前邊的都沒錯(cuò),就差一步了。
回答3:這是我用你的代碼讀到的東西。
目標(biāo)禁止了,為connection添加一個(gè)user-agent屬性吧。
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. html5 - 這個(gè)代碼顯示功能如何實(shí)現(xiàn)?3. java - 關(guān)于File的問題?4. java - instance method中 static后的<K>是什么意思?5. docker - 如何修改運(yùn)行中容器的配置6. 錯(cuò)誤:java.lang.NoSuchMethodError:org.objectweb.asm.ClassWriter。<init>(I)V7. python3.x - python連oanda的模擬交易api獲取json問題第五問8. javascript - QWebEngineView 如何爬 angular 的動(dòng)態(tài)數(shù)據(jù)?9. docker-machine添加一個(gè)已有的docker主機(jī)問題10. 為什么我ping不通我的docker容器呢???
