Java8 I/O源码-整体结构

在详细地对Java I/O系统中的各个类进行讲解前,先复习下Java I/O的整体结构。

如下图所示,基本包含了Java I/O中比较常用的类。

Java8 I/O源码-整体结构

下面简单地介绍下它们。

字节流

InputStream

InputStream是以字节为单位的输入流。

Java8 I/O源码-整体结构

介绍 传送门
ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节 详情
PipedInputStream 和PipedOutputStream一起使用,实现多线程间的管道通信。 详情
FilterInputStream FilterInputStream主要用途在于封装其他的输入输出流,为它们提供一些额外的功能。FilterInputStream的子类可进一步重写一些方法,并且还可以提供一些额外的方法和字段。 详情
BufferedInputStream 用于为其他输入流提供缓冲功能。 详情
DataInputStream 用来装饰其它输入流,以从底层输入流中读取基本Java数据类型。 详情
FileInputStream 文件输入流,用于从文件系统中的某个文件中获得输入字节。FileInputStream用于读取诸如图像数据之类的原始字节流。要读取字符流,请考虑使用FileReader。 详情
ObjectInputStream 对以前使用 ObjectOutputStream 写入的基本数据和对象进行反序列化
SequenceInputStream 串联输入流,将多个输入流转化为一个
StringBufferInputStream 将String转化为输入流

OutputStream

OutputStream是以字节为单位的输出流。

Java8 I/O源码-整体结构

介绍 传送门
ByteArrayOutputStream ByteArrayOutputStream中数据被写入一个byte数组。缓冲区会随着数据的不断写入而自动增长。 详情
PipedOutputStream 和PipedInputStream一起使用,实现多线程间的管道通信。 详情
FilterOutputStream FilterOutputStream主要用途在于封装其他的输入输出流,为它们提供一些额外的功能。FilterOutputStream的子类可进一步重写一些方法,并且还可以提供一些额外的方法和字段。 详情
BufferedOutputStream 用于为其他输出流提供缓冲功能。 详情
DataOutputStream 数据输出流允许应用程序以适当方式将基本Java数据类型写入输出流中。 详情
PrintStream 为其他输出流提供打印功能。
FileOutputStream 文件输出流,用于将数据写入File或FileDescriptor的输出流。FileOutputStream用于写入诸如图像数据之类的原始字节的流。要写入字符流,请考虑使用FileWriter。 详情
ObjectOutputStream 将Java对象的基本数据类型和图形写入 OutputStream。

字符流

Reader

Reader是以字符为单位的输入流。

Java8 I/O源码-整体结构

介绍 传送门
CharArrayReader 用于读取字符数组,实现一个可用作字符输入流的字符缓冲区。 详情
PipedReader 和PipedWriter一起实现线程间的通讯。 详情
FilterReader 用于读取已过滤的字符流
BufferedReader 为另一个输入流添加缓冲功能。 详情
InputStreamReader 是字节流通向字符流的桥梁 详情
FileReader 用于对文件进行读取操作 详情

Writer

Writer是以字符为单位的输出流。

Java8 I/O源码-整体结构

介绍 传送门
CharArrayWriter 实现了一个字符缓冲区。缓冲区会随向流中写入数据而自动增长。 详情
PipedWriter 和PipedReader一起是通过管道实现线程间的通讯。 详情
FilterWriter 用于写入已过滤的字符流。
BufferedWriter 为另一个输出流添加缓冲功能。 详情
OutputStreamWriter 是字符流通向字节流的桥梁, 详情
FileWriter 用于对文件进行写入操作。 详情
PrintWriter 为文本输出流提供打印功能。 详情


对I/O整体结构的复习就到这里。想了解更多内容请参考

版权声明
作者:潘威威

原文地址:****博客-潘威威的博客-http://blog.****.net/panweiwei1994/article/details/78067490

本文版权归作者所有,欢迎转载,但转载时请在文章明显位置给出原文作者名字(潘威威)及原文链接,否则作者将保留追究法律责任的权利。