Java 流操作:输入流、过滤流及相关类的深入解析
在 Java 编程中,流操作是处理数据输入输出的重要部分。下面我们将详细介绍输入流、过滤流以及一些常用的流类。
输入流的关闭
当程序使用完输入流后,应调用其 close()
方法关闭流,这样可以释放与流相关的资源,如文件句柄或端口。一旦输入流关闭,再进行读取操作会抛出 IOException
。不过,某些流在关闭后仍可进行一些操作,例如从 java.security.DigestInputStream
获取消息摘要,通常要在数据读取并关闭流之后进行。
标记和重置
InputStream
类有三个不太常用的方法,可让程序回退并重新读取已读数据:
- public void mark(int readAheadLimit)
- public void reset() throws IOException
- public boolean markSupported()
要重新读取数据,可使用 mark()
方法标记流中的当前位置,之后使用 reset()
方法将流重置到标记位置,后续读取将从标记位置开始。但重置的距离有限,能从标记处读取并仍可重置的字节数由 mark()
方法的 readAheadLimit
参数决定。若尝试重置太远,会