2014-10-06 71 views
0

獲取上述錯誤嘗試使用HttpGet系統資源不足,無法完成所要求的服務

String uri = ""; 
getMethod = executeGet(uri); 
httpClient.executeMethod(getMethod); 
InputStream istream = getMethod.getResponseBodyAsStream(); 
byte[] data = IOUtils.toByteArray(istream); 
FileUtils.writeByteArraytoFile(new File("xxx.zip"),data) 
+0

請問你格式化你的代碼,當你問問題。 – 2014-10-06 11:55:36

+0

錯誤發生在哪一行? – 2014-10-06 12:00:47

回答

1

您使用的是臨時的字節數組可能是問題的原因,以下載大量數據時。 您可以直接將流的內容寫入您的文件。

String uri = ""; 
getMethod = executeGet(uri); 
httpClient.executeMethod(getMethod); 
InputStream istream = getMethod.getResponseBodyAsStream(); 
IOUtils.copy(istream, new FileOutputStream(new File("xxx.zip")); 
1

您正在讀取整個響應到byte[](內存)。相反,你可以流式輸出,你從istream讀取它類似的東西,

File f = new File("xxx.zip"); 
try (OutputStream os = new BufferedOutputStream(new FileOutputStream(f));) { 
    int c = -1; 
    while ((c = istream.read()) != -1) { 
     os.write(c); 
    } 
} catch (Exception e) { 
    e.printStackTrace(); 
} 
相關問題