我在FileInputStream中使用mark和reset时出现这个错误。
Exception in thread "main" java.io.IOException: mark/reset not supported
InputStream中的mark和reset不是用来标记和重复读取流的吗?
mark(int readlimit)用于标记输入流当前的位置,当调用reset()方法时会将该流重新定位到标记的位置,当标记之后读取流的字节数超过readlimit,那么该标记将失效。
reset()可以将当前流的位置回到最后一次标记的位置,也就是最后一次调用mark时流的位置。
但是并不是所有的InputStream都支持mark和reset,InputStream默认实现是不支持的,可以通过markSupported()方法检查当前流是否支持。
FileInputStream是不支持的,而BufferedInputStream、ByteArrayInputStream支持。
内容