开发者社区> 问答> 正文

两次读取一部分InputStream

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

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

这里描述了一种解决方案,它可以读取一次输入流两次,但是问题是我的流可能很大,并且我无法将其全部存储在内存中(而且我不确定最大数组大小是否足够) )。

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

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 09:42:48 339 0
1 条回答
写回答
取消 提交回答
  • BufferedInputStream.markSupported()返回true(请参阅Javadoc)。只需BufferedInputStream用来包装您的流,并将标记限制设置为大于X。

    回答来源:Stack Overflow

    2020-03-27 09:43:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载