两次读取InputStream的一部分

问题描述 投票:1回答:1

我有一个可能很大的ServletInputStream,我想提取InputStream的前X个字节,然后让流处于初始状态。

我现在所做的是markSupported(),mark()和reset(),但markSupported返回false,因此我需要实现另一种方式。

描述了一种解决方案,here读取输入流两次,但是问题是我的流的大小可能非常大,并且我无法将其全部存储在内存中(此外,我不确定max数组大小就足够了。

有一种方法可以读取少量字节,然后将流置于初始状态。解决方法是消耗我要读取的X字节,然后让消耗的流通过X字节,除了以下过程(我要避免)。

java inputstream
1个回答
1
投票

BufferedInputStream.markSupported()返回true(请参阅Javadoc)。只需用BufferedInputStream包装流,并将标记限制设置为大于X。

© www.soinside.com 2019 - 2024. All rights reserved.