【发布时间】:2020-06-25 13:42:16
【问题描述】:
我有一个非常大的 ServletInputStream,我想提取 InputStream 的前 X 个字节,然后让流处于初始状态。
我现在所做的是 markSupported()、mark() 和 reset(),但是 markSupported 返回 false,所以我需要实现另一种方法。
描述了here 两次读取输入流的解决方案,但问题是我的流的大小可能非常大,我无法将其全部存储在内存中(此外,我不确定最大数组大小就足够了)。
有没有办法只读取少量字节,然后将流置于初始状态。解决方法是消耗我想要读取的 X 个字节,然后让消耗的流在以下过程之外传递 X 个字节(我想避免)。
【问题讨论】:
-
如何读取所有
ServletInputStream并将其保存到本地主机上的文件中? -
你能把输入流包装在一个 BufferedInputStream 中吗?然后您可以将流标记为重置。
-
尝试找到
markSupported为真的读者。 -
Abra 这不是一个选项。拉尔夫谢谢,我已经做到了
标签: java inputstream