InputStream的mark和reset方法怎么用?

我在FileInputStream中使用mark和reset时出现这个错误。

Exception in thread "main" java.io.IOException: mark/reset not supported

InputStream中的mark和reset不是用来标记和重复读取流的吗?

inputstreammarkresetmarkSupported
1
297
小课
小课2022-05-17 15:48
1 个回答

mark(int readlimit)用于标记输入流当前的位置,当调用reset()方法时会将该流重新定位到标记的位置,当标记之后读取流的字节数超过readlimit,那么该标记将失效。

reset()可以将当前流的位置回到最后一次标记的位置,也就是最后一次调用mark时流的位置。

但是并不是所有的InputStream都支持mark和reset,InputStream默认实现是不支持的,可以通过markSupported()方法检查当前流是否支持。

FileInputStream是不支持的,而BufferedInputStream、ByteArrayInputStream支持。

2
小课
小课2022-05-17 17:30
你的回答

内容