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

标签 java inputstream reset

我正在尝试构建一个简单的解析器,并且由于 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/

相关文章:

css - 摆脱用户代理样式表规则?

java - 为什么在 spring-boot 中 Web 应用程序必须有单独的 @Controller 类文件?

java - Tomcat 7嵌套CombinedRealm、LockoutRealm和DataSourceRealm

java - 使用 Inputstream 将二进制数据转换为 long[],同时保持原始顺序

android - 无法从 Android 中的蓝牙设备读取任何数据

java - InputStream.available() 并从 oracle 中完整读取文件注释

php - 验证用户/更新表

Python urllib2.open 连接由对等错误重置

java - ant exec 任务错误,代码=3

java - 如何用 Mockito 模拟 Thread.class?