Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
I/O Stream ( I/O 流) 表示输入源或输出目的地。流可以表示许多不同类型的源和目标,包括磁盘文件、设备、其他程序和内存阵列。
Streams 支持许多不同类型的数据,包括简单字节、基本数据类型、本地化字符和对象。有些流只传递数据;其他人以有用的方式操纵和转换数据。
无论它们如何在内部工作,所有流都为使用它们的程序提供相同的简单模型:流是一系列数据。程序使用 input stream (输入流) 从源读取数据,一次一个项:
将信息读入程序。
程序使用 output stream (输出流) 将数据写入目标,一次一项:
从程序中写入信息。
在本课中,我们将看到可以处理各种数据的流,从基本类型值到高级对象。
上图所示的数据源和数据目的地可以是保存、生成或使用数据的任何内容。显然这包括磁盘文件,但源或目标也可以是另一个程序、外围设备、网络套接字或阵列。
在下一节中,我们将使用最基本的流类型——字节流来演示流 I/O 的常见操作。对于示例输入,我们将使用示例文件 xanadu.txt
,其中包含以下诗文:
In Xanadu did Kubla Khan A stately pleasure-dome decree: Where Alph, the sacred river, ran Through caverns measureless to man Down to a sunless sea.