在Java中流式传输HTTP响应

时间:2012-07-29 16:03:31

标签: httpresponse fileinputstream

我想将对HTTP请求的响应写入文件。但是,我希望将响应流式传输到物理文件,而无需等待加载整个响应。

我实际上会向JHAT服务器发出请求,要求从转储中返回所有字符串。我的浏览器在响应完成之前挂起,因为有7万个这样的对象,我想将它们写入文件以便我可以扫描。

提前感谢,

1 个答案:

答案 0 :(得分:3)

从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);
}