【发布时间】:2011-08-04 08:09:46
【问题描述】:
我正在尝试从流顶部开始多次读取java.io.InputStream。
显然对于返回true 到markSupported() 的流,我可以尝试使用mark(availableBytes) 然后reset() 从顶部再次读取流。
大多数流不支持标记,支持标记的流(例如java.io.BufferedInputStream)将数据复制到临时字节数组中,这在内存消耗等方面不好。
如果我的方法接收到java.io.InputStream 作为参数,我可以关闭它然后以某种方式重新打开它以将相同的原始流重置到顶部以便我可以再次读取它吗?
除了将原始 InputStream 写入内存(牦牛!)或临时文件之外,如果我需要再次从顶部读取流,我找不到任何方法来执行此技巧,而不是打开新的 InputStream 到这些临时位置.
【问题讨论】:
标签: java io inputstream java-io bufferedinputstream