我有一个可能很大的ServletInputStream,我想提取InputStream的前X个字节,然后让流处于初始状态。
我现在所做的是markSupported(),mark()和reset(),但markSupported返回false,因此我需要实现另一种方式。
描述了一种解决方案,here读取输入流两次,但是问题是我的流的大小可能非常大,并且我无法将其全部存储在内存中(此外,我不确定max数组大小就足够了。
有一种方法可以读取少量字节,然后将流置于初始状态。解决方法是消耗我要读取的X字节,然后让消耗的流通过X字节,除了以下过程(我要避免)。
BufferedInputStream.markSupported()
返回true(请参阅Javadoc)。只需用BufferedInputStream
包装流,并将标记限制设置为大于X。