流是一组有序的数据序列,将数据从一个地方带到另一个地方。在 Java 中,控制台的输入输出、文件的读写和网络通信都是通过「流」的方式进行的。

流的分类

按「方向」分

可以分为「输出流」和「输入流」两种。数据从外部进入程序为「输入」,反之为「输出」。

按「数据单位」分

可以分为「字节流」(传输字节,如文本、图像、声音等各种内容)和「字符流」(传输 16 bit 的字符,只能用来处理文本)。

完整的流家族

Java 的所有的流位于 java.io 包中,继承下面的「四大家族」。

字节流 字符流
输入流 InputStream Reader
输出流 OutputStream Writer

类名以 Stream 结尾的流都是字节流,以 ReaderWriter 结尾的流都是字符流。

流式输入输出

每个 Java 程序都包含一个系统流位于 java.lang.System,包含三个子类:

读取键盘输入

在 C 语言里用一句 gets() 就能做的事,在 Java 这边不是很容易。结论:C > Java。

先从 System.in 创建一个 BufferedReader 字符流 br

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));