我试图从流顶部开始多次读取java.io.InputStream
。我可以关闭/重新打开InputStream以模拟不支持标记的输入流的标记/重置吗?
显然,对于流返回true
到markSupported()
我可以尝试使用mark(availableBytes)
,然后reset()
从顶部再次读取流。
大部分流的不支持标记和那些(例如java.io.BufferedInputStream
)将数据复制到临时字节排列构成的非内存消耗的术语漂亮等
如果我的方法接收java.io.InputStream
作为参数我可以关闭它,然后重新打开它重置相同的原始流到顶部,所以我可以再次阅读它?
我找不到任何方式从原来写入到InputStream
内存除了做这一招(牦牛!)或临时文件,并比打开新InputStream
那些临时地点,如果我需要再次读取从顶部流。
你说得对,这对于'InputStream'来说不是微不足道的。然而,我意识到我实际上正在处理具有可用于标记/重置的API的ImageInputStream。 – parxier 2011-04-13 23:05:49