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()之前,先調(diào)用outputStream.flush(),這個方法能強制把輸出流緩沖全部寫出來。你前邊的都沒錯,就差一步了。
回答3:這是我用你的代碼讀到的東西。
目標禁止了,為connection添加一個user-agent屬性吧。
相關(guān)文章:
1. mysql日期類型默認值’0000-00-00’ 報錯2. 求救一下,用新版的phpstudy,數(shù)據(jù)庫過段時間會消失是什么情況?3. mysql replace 死鎖4. mysql - C#連接數(shù)據(jù)庫時一直這一句出問題int i = cmd.ExecuteNonQuery();5. MYSQL 根據(jù)兩個字段值查詢 但兩個值的位置可能是互換的,這個怎么查?6. extra沒有加載出來7. android - 安卓做前端,PHP做后臺服務(wù)器 有什么需要注意的?8. javascript - 微信網(wǎng)頁開發(fā)從菜單進入頁面后,按返回鍵沒有關(guān)閉瀏覽器而是刷新當前頁面,求解決?9. php傳對應(yīng)的id值為什么傳不了啊有木有大神會的看我下方截圖10. mysql - ubuntu開啟3306端口失敗,有什么辦法可以解決?
