在Java IO体系中,这些类可大致分为字节流和字符流,并且存在节点流和处理流的区别,以下是它们之间的关系说明:

字节流相关类

1. InputStream 和 OutputStream

-  InputStream :是所有字节输入流的抽象基类,定义了诸如  read()  等读取字节数据的方法。

-  OutputStream :是所有字节输出流的抽象基类,定义了诸如  write()  等写入字节数据的方法。

2. 节点流

-  FileInputStream :用于从文件中读取字节数据,继承自  InputStream 。

-  FileOutputStream :用于向文件中写入字节数据,继承自  OutputStream 。

-  ByteArrayInputStream :允许从字节数组中读取数据,继承自  InputStream 。

-  ByteArrayOutputStream :用于将数据写入字节数组,继承自  OutputStream 。

-  PipedInputStream  和  PipedOutputStream  :用于线程间通信,成对使用,分别继承自  InputStream  和  OutputStream  。

3. 处理流

-  BufferedInputStream :为其他字节输入流提供缓冲功能,提高读取效率,继承自  FilterInputStream  ,而  FilterInputStream  继承自  InputStream 。

-  BufferedOutputStream :为其他字节输出流提供缓冲功能,继承自FilterOutputStream  ,而  FilterOutputStream  继承自OutputStream 。

-  DataInputStream :允许从输入流中读取基本数据类型(如  int 、 double  等),继承自  FilterInputStream 。

-  DataOutputStream :允许向输出流中写入基本数据类型,继承自  FilterOutputStream 。

-  PushbackInputStream :允许将读取的字节推回到输入流中,继承自  FilterInputStream 。

字符流相关类

1. Reader 和 Writer

-  Reader :是所有字符输入流的抽象基类,定义了读取字符数据的方法,如  read() 。

-  Writer :是所有字符输出流的抽象基类,定义了写入字符数据的方法,如  write() 。

2. 节点流

-  FileReader :用于从文件中读取字符数据,继承自  Reader 。

-  FileWriter :用于向文件中写入字符数据,继承自  Writer 。

-  CharArrayReader :允许从字符数组中读取数据,继承自  Reader 。

-  CharArrayWriter :用于将数据写入字符数组,继承自  Writer 。

-  StringReader :用于从字符串中读取字符,继承自  Reader 。

-  StringWriter :用于将字符写入字符串,继承自  Writer 。

-  PipedReader  和  PipedWriter  :用于线程间的字符数据通信,分别继承自  Reader  和  Writer 。

3. 处理流

-  BufferedReader :为字符输入流提供缓冲,并且提供了如  readLine()  等便捷方法,继承自  Reader 。

-  BufferedWriter :为字符输出流提供缓冲,继承自  Writer 。

-  FilterReader  和  FilterWriter :是字符处理流的抽象基类,其他一些特定功能的字符处理流(如  PushbackReader  等)继承自它们 。

-  InputStreamReader :将字节输入流转换为字符输入流,继承自  Reader ,可以指定字符编码。

-  OutputStreamWriter :将字节输出流转换为字符输出流,继承自  Writer ,可以指定字符编码。

-  LineNumberReader :扩展了  BufferedReader ,可以跟踪行号,常用于读取文本文件时获取行号信息。

其他类

-  RandomAccessFile :既不是  InputStream  的子类,也不是  OutputStream  的子类,它独立于标准的IO继承体系,用于随机访问文件,可以在文件的任意位置进行读写操作。

更多推荐