2012-07-29 886 views
2

我想將HTTP請求中的響應寫入文件。不過,我希望將響應流式傳輸到物理文件,而無需等待整個響應被加載。以Java流式傳輸HTTP響應

我實際上會向JHAT服務器發出請求,以便從轉儲中返回所有字符串。我的瀏覽器在響應完成之前掛起,因爲有70,000個這樣的對象,我想將它們寫入文件以便我可以掃描。

由於事先

回答

2

從HTTP流中讀取數據的有限量的,並將其寫入到文件中的流。這樣做直到處理完所有數據。

下面是演示原理的示例代碼。在這個例子中,我不處理任何I/O錯誤。我選擇了一個8KB的緩衝區,比一次處理一個字節的速度快,但仍然限制了在每次迭代過程中拉入RAM的數據量。

final URL url = new URL("http://example.com/"); 
final InputStream istream = url.openStream(); 
final OutputStream ostream = new FileOutputStream("/tmp/data.txt"); 

final byte[] buffer = new byte[1024*8]; 
while (true) { 
    final int len = istream.read(buffer); 
    if (len <= 0) { 
     break; 
    } 
    ostream.write(buffer, 0, len); 
}