Java SocketInputStream和InputStream支持重置()或MarkSupported()

Java SocketInputStream和InputStream支持重置()或MarkSupported(),java,core,Java,Core,我正在尝试创建一个示例,它以SocketInputStream的形式获取InputStream。它不受支持reset()和mark()。现在,一旦我处理了这个输入流,我就可以为其他操作再次处理它,因为它在eof时被关闭。 我想对InputStream使用这个过程,它允许reset()和markSupported() 在这种情况下如何处理InputStream。显然,默认情况下SocketInputStream不支持mark()和reset()。网络流不是可以重新定位的东西。没有任何东西存储已经读

我正在尝试创建一个示例,它以
SocketInputStream
的形式获取
InputStream
。它不受支持
reset()
mark()
。现在,一旦我处理了这个输入流,我就可以为其他操作再次处理它,因为它在eof时被关闭。 我想对
InputStream
使用这个过程,它允许
reset()
markSupported()


在这种情况下如何处理
InputStream

显然,默认情况下
SocketInputStream
不支持
mark()
reset()
。网络流不是可以重新定位的东西。没有任何东西存储已经读取的字节,因此流永远无法返回

也就是说,您可以扩展
SocketInputStream
,并提供该功能。您需要重写
SocketInputStream.read(byte b[],int off,int length)
方法,并将信息存储在
ByteArrayOutputStream
或其他正在运行的
byte[]
中。每当重新定位标记时,如果您位于内部数组的末尾,则只需要从
字节[]
读取
super.read(…)


然而,要想正确处理,这是一项很好的工作,您必须非常小心这里的内存。

确保我遵循:您需要一种方法来处理所有
InputStream
实例,以便支持
reset
mark
(例如,使用包装器
InputStream
)?您的问题与此处发现的问题类似吗?谢谢,我有这个想法,但我想不使用OutputStream但是谢谢你的建议。我试试看。