我可以在Java中的InputStream上执行连续的标记操作吗

Geo*_*nis 5 java inputstream reset

我正在尝试构建一个简单的解析器,并且由于 InputStream 没有类似 peek 的方法,因此我正在使用标记和重置。但我怀疑连续的标记调用会使之前的调用无效。是这样吗?是否可以做类似的事情

foo.mark(1);
...
foo.mark(2);
...
foo.reset();
...
foo.reset();
Run Code Online (Sandbox Code Playgroud)

如果没有,是否有其他方法来模拟这个或 peek 方法?

谢谢。

Chr*_*ung 1

标记不嵌套。

如果您想多次重新读取流,则可能需要将流(的一部分)复制到字节数组中,并制作ByteArrayInputStream它的一部分。你仍然不能有多个mark,但你可以有多个ByteArrayInputStreams。(或者干脆忘记ByteArrayInputStream并直接从数组中选取字节。)