Java通過http請求保存遠程圖片至本地

jopen 9年前發布 | 2K 次閱讀 Java

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class ImageRequest {
/**

 * @param args  
 */    
public static void main(String[] args) throws Exception {    
    int one=1;  
    int two=1;  
    while(true){  

    //new一個URL對象    
    URL url = new URL("http://www.baiduhome.net/code/images/opencode.jpg");    
    //打開鏈接    
    HttpURLConnection conn = (HttpURLConnection)url.openConnection();    
    //設置請求方式為"GET"    
    conn.setRequestMethod("GET");    
    //超時響應時間為5秒    
   // conn.setConnectTimeout(5 * 1000);    
    //通過輸入流獲取圖片數據    
    InputStream inStream=null;  
    try{  
      inStream = conn.getInputStream();    
    }catch (Exception e) {  
           System.out.println("Error"+one+","+two);  
        System.out.println("///");  
        if(two==20){  
            one++;  
            two=1;  
        }else{  
            two++;  
        }  
        if(one==21){  
            return;  
        }  
        continue;  
    }  
    //得到圖片的二進制數據,以二進制封裝得到數據,具有通用性    
    byte[] data = readInputStream(inStream);    
    //new一個文件對象用來保存圖片,默認保存當前工程根目錄    
    File imageFile = new File(one+","+two+".jpg");    
    System.out.println(one+","+two);  
    //創建輸出流    
    FileOutputStream outStream = new FileOutputStream(imageFile);    
    //寫入數據    
    outStream.write(data);    
    //關閉輸出流    
    outStream.close();    

    if(two==20){  
        one++;  
        two=1;  
    }else{  
        two++;  
    }  
    if(one==20){  
        return;  
    }  

    }  

}    
public static byte[] readInputStream(InputStream inStream) throws Exception{    
    ByteArrayOutputStream outStream = new ByteArrayOutputStream();    
    //創建一個Buffer字符串    
    byte[] buffer = new byte[1024];    
    //每次讀取的字符串長度,如果為-1,代表全部讀取完畢    
    int len = 0;    
    //使用一個輸入流從buffer里把數據讀取出來    
    while( (len=inStream.read(buffer)) != -1 ){    
        //用輸出流往buffer里寫入數據,中間參數代表從哪個位置開始讀,len代表讀取的長度    
        outStream.write(buffer, 0, len);    
    }    
    //關閉輸入流    
    inStream.close();    
    //把outStream里的數據寫入內存    
    return outStream.toByteArray();    
}    

} </pre>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!