我想将 HTTP 请求的响应写入文件。但是,我想将响应流式传输到物理文件,而无需等待加载整个响应。
实际上,我将向 JHAT 服务器发出请求,以从转储中返回所有字符串。我的浏览器在响应完成之前挂起,因为有 70k 这样的对象,我想将它们写入文件以便我可以扫描。
提前致谢,
我想将 HTTP 请求的响应写入文件。但是,我想将响应流式传输到物理文件,而无需等待加载整个响应。
实际上,我将向 JHAT 服务器发出请求,以从转储中返回所有字符串。我的浏览器在响应完成之前挂起,因为有 70k 这样的对象,我想将它们写入文件以便我可以扫描。
提前致谢,
从 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);
}