生活随笔
收集整理的這篇文章主要介紹了
HttpURLConnection根据URL下载图片
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
來看下最簡單的根據(jù)URL下載圖片,此方法在實際開發(fā)中,不建議使用,因為有些圖片是下載不了的,比如百度上的一些圖片,返回http的響應(yīng)碼是405
[java]?view plaincopy
package?cn.ztz.test;?? ?? import?java.io.BufferedOutputStream;?? import?java.io.File;?? import?java.io.FileOutputStream;?? import?java.io.InputStream;?? import?java.io.OutputStream;?? import?java.net.HttpURLConnection;?? import?java.net.InetAddress;?? import?java.net.URL;?? ?? public?class?HttpDownLoad?{?? ????public?static?void?download(String?url,?String?dir,String?fileName)?{?? ????????HttpURLConnection?httpURLConnection?=?null;?? ????????OutputStream?out?=?null;?? ????????InputStream?in?=?null;?? ????????try?{?? ????????????URL?sendUrl?=?new?URL(url);?? ????????????httpURLConnection?=?(HttpURLConnection)?sendUrl.openConnection();?? ????????????httpURLConnection.setRequestMethod("POST");?? ????????????httpURLConnection.setRequestProperty("contentType",?"utf-8");?? ????????????httpURLConnection.setDoOutput(true);??? ????????????httpURLConnection.setUseCaches(false);?? ????????????httpURLConnection.setConnectTimeout(3000);?? ????????????httpURLConnection.setReadTimeout(3000);?? ????????????httpURLConnection.setRequestProperty(?? ????????????????????"User-agent",InetAddress.getLocalHost().getHostAddress()?+?":"?? ????????????????????????????+?System.getProperty("catalina.home"));?? ????????????out?=?httpURLConnection.getOutputStream();?? ?????????????? ????????????out.flush();?? ?????????????? ????????????int?httpStatusCode?=?httpURLConnection.getResponseCode();?? ????????????if(httpStatusCode!=200){?? ????????????????throw?new?RuntimeException("異常");?? ????????????}?? ????????????in?=?httpURLConnection.getInputStream();?? ?????????????? ????????????int?len?=?httpURLConnection.getContentLength();?? ?????????????? ????????????String?pathAndName?=?dir?+?File.separator?+?fileName;?? ?????????????? ????????????saveFileByByte(in,?pathAndName,?len);?? ????????}?catch?(Exception?e)?{?? ????????????e.printStackTrace();?? ????????}?finally?{?? ????????????if?(out?!=?null)?{?? ????????????????try?{?? ????????????????????out.close();?? ????????????????}?catch?(Exception?e)?{?? ????????????????????e.printStackTrace();?? ????????????????????throw?new?RuntimeException(e.getMessage());?? ????????????????}?? ????????????}?? ????????????if?(in?!=?null)?{?? ????????????????try?{?? ????????????????????in.close();?? ????????????????}?catch?(Exception?e)?{?? ????????????????????e.printStackTrace();?? ????????????????}?? ????????????}?? ????????????if?(httpURLConnection?!=?null)?{?? ????????????????httpURLConnection.disconnect();?? ????????????????httpURLConnection?=?null;?? ????????????}?? ????????}?? ????}?? ?? ?????? ????private?static?void?saveFileByByte(InputStream?in,?String?path,?int?len)?? ????????????throws?Exception?{?? ????????byte[]?byteDatas?=?new?byte[len];?? ????????BufferedOutputStream?bw?=?null;?? ????????try?{?? ?????????????? ????????????File?f?=?new?File(path);?? ?????????????? ????????????if?(!f.getParentFile().exists())?? ????????????????f.getParentFile().mkdirs();?? ?????????????? ????????????bw?=?new?BufferedOutputStream(new?FileOutputStream(path));?? ????????????int?bytesRead?=?0;?? ????????????while?((bytesRead?=?in.read(byteDatas,?0,?byteDatas.length))?!=?-1)?{?? ????????????????bw.write(byteDatas,?0,?bytesRead);?? ????????????}?? ????????}?catch?(Exception?e)?{?? ????????????e.printStackTrace();?? ????????????throw?e;?? ????????}?finally?{?? ????????????try?{?? ????????????????if?(bw?!=?null)?? ????????????????????bw.close();?? ????????????}?catch?(Exception?e)?{?? ????????????????throw?e;?? ????????????}?? ????????}?? ????}?? }??
總結(jié)
以上是生活随笔為你收集整理的HttpURLConnection根据URL下载图片的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。