【发布时间】:2020-03-03 18:32:59
【问题描述】:
据我了解,InputStream 是一个字节流。我有兴趣将 InputStream 对象转换为字节流。基本上是以下方法的实现。
public Stream<byte[]> toStream(final InputStream is, final int bufferSize);
完成这项工作的最佳方法是什么?缓冲区大小是一次从 InputStream 读取的字节数。
【问题讨论】:
-
您目前如何阅读/处理您的
InputStream? -
为什么要
Stream<byte[]>?你打算如何处理它? -
@thisisshantzz 那么您正在寻找错误的方法。您不需要
Stream,您需要将InputStream连接到客户端的OutputStream,然后正常流式传输字节。具体如何完成取决于您的环境,但例如对于 Spring,您可以使用StreamingResponseBody。 -
在您发布的方法的签名中,您试图将 InputStream 转换为字节数组流而不是字节流。首先,您必须解释该字节数组的含义。如果它们是文本行,您可以使用此 stackoverflow.com/questions/30336257/...。如果你想要字节流而不是字节数组流,你可以使用 inputStream 的 readAllBytes 方法,然后将数组转换为 Stream
-
@thisisshantzz 如果您只想将
InputStream“重定向”到客户端,那么在两者之间任何额外的Flux或byte[]都是完全没有必要的。这只是普通的基本流媒体。请参阅here 了解更多信息。
标签: java java-stream inputstream