我正在尝试构建一个简单的解析器,并且由于 InputStream 没有一些类似 peek 的方法,所以我正在使用标记和重置。 但我怀疑连续调用标记,使之前的调用无效。是这样吗? 是否可以做类似的事情
foo.mark(1);
...
foo.mark(2);
...
foo.reset();
...
foo.reset();
如果没有,是否有其他方法可以模拟这个或 peek 方法?
谢谢。
最佳答案
您的怀疑是正确的,InputStream.mark(int readlimit)方法将允许您仅将流重新定位到最后标记的位置,前提是您读取的字节少于 readlimit
字节。如果您想要一个“可窥视”的 InputStream,您可能需要考虑 PushbackInputStream .它没有明确提供查看功能,但可以让您“推回”已阅读的字节。
关于java - 我可以在 Java 中对 InputStream 执行连续的标记操作吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062052/