2012-07-29 124 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); 
}