Java 获取大型输入流的大小会耗尽内存



我正在使用这段标准代码,但它会耗尽内存。尝试了谷歌番石榴Bytestream.toArray甚至IOUtils.toByteArray,但没有运气。目的是获取大型二进制文件的输入流长度,以便进一步处理输入流。此外,还存在使用文件系统的限制。

byte[] data = new byte[4096];
while ((nRead = is.read(data, 0, data.length)) != -1) {
buffer.write(data, 0, nRead);
}

如果读取文件不是一个选项,并且它来自多部分请求,您可以尝试使用content-length标头。

另一种选择是强制客户端为文件提供文件大小,这样就不需要将其加载到内存中。请注意,仅当您的 API 客户端受信任时,这才有意义。

相关内容

  • 没有找到相关文章

最新更新