我可以关闭/重新打开InputStream来模拟不支持标记的输入流的标记/重置吗?

| 我正尝试从流的顶部开始多次读取“ 0”。 显然对于返回
true
markSupported()
的流,我可以尝试使用
mark(availableBytes)
,然后是
reset()
从顶部再次读取流。 大多数流不支持mark,而那些流(例如ѭ5)将数据复制到临时字节数组中,这在内存消耗方面并不理想。 如果我的方法将“ 0”作为参数接收,我可以将其关闭然后以某种方式重新打开以将相同的原始流重置为顶部,以便我可以再次读取它吗? 除了将原始的ѭ7写入内存(ak牛!)或临时文件之外,如果我需要再次从顶部读取流,我除了找到新的
InputStream
到那些临时位置之外,没有其他方法可以做到这一点。     
已邀请:
您可以关闭它,但是在不创建数据的明确副本的情况下将同一流重新打开到同一数据的唯一方法是确定要处理的具体类型
InputStream
(简单),该流被初始化为指向什么(根据流类型及其接口的不同,可能是容易,困难或不可能的),然后添加代码以使用原始源输入实例化具体流类型的新实例(这并不困难,但也不太易于维护和容易如果有人创建了一个您不知道如何处理的自定义“ 7”实现,则该功能将不可用)。     

要回复问题请先登录注册