httpresponse - 在 Java 中流式传输 HTTP 响应

标签 httpresponse fileinputstream

我想将 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);
}

关于httpresponse - 在 Java 中流式传输 HTTP 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11710683/

相关文章:

java - IO java 中的 Skip() 方法?

c# - 将 MemoryStream 写入响应对象

java - 无法使用 Android/JSOUP 解析 HTML 数据

C# Web API 基于 GET 请求的 XML 或 JSON

java - 如何从 Java 中的 HttpResponse 获取单个表单字段并将其写入文件?

android - 打开一个 12kb 的文本文件需要太长时间......?

java - 使用 FileStream 在 Java 中复制文件

java - AndroidBlockGuardPolicy.onReadFromDisk FileInputStream 违规

java - Openfileinput 返回空指针异常

java - 如何将 HttpResponse 转发到打开的客户端套接字? (Java程序充当代理)