InputStream
类中的 mark()
和 reset()
方法是用于在输入流中记录和重置位置的。它们常常与 markSupported()
方法一起使用,以确定输入流是否支持这些操作。
mark(int readlimit)
: 此方法用于在输入流中标记当前位置。它接受一个参数 readlimit
,表示在调用 reset()
方法之前可以读取的字节数。如果在 readlimit
字节之后调用 reset()
,则不能保证所有的字节都会被重新读取。
reset()
: 此方法用于将输入流的位置重置为上次调用 mark()
方法时的位置。在调用 reset()
之前,必须先调用 mark()
,否则可能会抛出 IOException
。
markSupported()
: 此方法用于检查输入流是否支持 mark()
和 reset()
方法。如果返回 true
,则表示支持这些方法;如果返回 false
,则表示不支持。
这些方法通常用于在处理输入流时需要多次读取相同数据的情况,例如在处理文件或网络连接时。请注意,并非所有的 InputStream
子类都支持这些方法,因此在使用之前应该先检查 markSupported()
的返回值。