2010-07-29 77 views
2

我正在使用httpclient從網頁下載圖片,我試圖將它們保存到磁盤,但沒有多少運氣。我使用下面的代碼來獲取圖像,但不知道需要未來做什麼真正得到它的磁盤,取數據將是對JPG或PNG圖像路徑...感謝如何將圖像存儲到Java中的磁盤?

HttpContext localContext = new BasicHttpContext(); 
     localContext.setAttribute(ClientContext.COOKIE_STORE,HttpClientFetch.emptyCookieStore); 

     HttpGet httpget = new HttpGet(pPage.imageSrc); 
     HttpResponse response; 
     response = httpClient.execute(httpget, localContext); 

     Header[] headers = response.getAllHeaders(); 
     for(Header h: headers) { 
      logger.info("HEADERS: "+h.getName()+ " value: "+h.getValue()); 
     } 

     HttpEntity entity = response.getEntity(); 


     Header contentType = response.getFirstHeader("Content-Type"); 

     byte[] tmpFileData; 

     if (entity != null) { 
      InputStream instream = entity.getContent(); 
      int l; 
      tmpFileData = new byte[2048]; 
      while ((l = instream.read(tmpFileData)) != -1) { 
      } 
     } 

tmpFileData現在應該保存來自網站的jpg的字節。

+1

會不會使用fileOutputStream.write(byte [])工作嗎? – samitgaur 2010-07-29 20:31:51

回答

3
if (entity != null) { 
    InputStream instream = entity.getContent(); 
    OutputStream outstream = new FileOutputStream("YourFile"); 
    org.apache.commons.io.IOUtils.copy(instream, outstream); 
} 
+0

工作!謝謝:) – James 2010-07-29 20:47:20

+0

使用此示例,Java顯示錯誤,因爲YourFile不存在。爲什麼會發生這種情況,我認爲這個腳本試圖創建這個文件,而不是從它讀取。 – eLRuLL 2013-03-22 16:29:32

1

看一看FileOutputStream及其write方法。

FileOutputStream out = new FileOutputStream("outputfilename"); 
out.write(tmpFileData); 
1

更好地利用阿帕奇百科全書-10,那麼你可以一個InputStream的只是複製到一個OutputStream的(FileOutputStream中你的情況)。