数据流的概念
在 Java 中,把所有的输入和输出都当做流来处理。 “ 流 ” 是一个抽象概念,它代表任何有能力产出数据的数据源对象或者是有能力接收数据的接收端对象。 “ 流 ” 屏蔽了实际的输入 / 输出设备中处理数据的细节。一个程序可以打开一个数据源上的流,然后按顺序读取这个流中的数据到程序中,这样的流称为输入流,其过程如图所示。一个程序也可以打开一个目的地的流,然后按顺序的把程序中的数据写入到这个目地中,这样的流称为输出流。
加深理解:输入输出是相对程序而言的。
流的分类
两种分法:
1.Java 的输入 / 输出流中,根据它们的数据类型,主要可分为两类:字符流 (Character Stream) 和字节流 (Btye Stream) 。
字符流 (character Stream) 字符流的输入 / 输出数据是字符码, 即 Unicode 字符。
字符流有两个基本类: Reader 类和 Writer 类。 Reader 类用于处理字符输入流, Writer 类用于处理字符输出流。 它们都是抽象类,本身不能直接用来创建对象。提供了一些方法。
字节流 (Btye Stream) 字节流是按字节读 / 写二进制数据。
字节流有两个基本的类: InputStream 类和 OutputStream 类。 InputStream类用于处理字节输入流, OutputStream 类用于处理字节输出流。它们都是抽象类,本身不能直接用来创建对象。InputStream 类和 OutputStream 类为其它字节输入 / 输出流子类提供了一些基本方法和标准接口。
2.按照流是否直接与特定的地方(如磁盘、内存等)相连,分为节点流与处理流。
节点流:可以从或者向一个特定的地方(节点)读写数据。如文件流 FileReader 。
处理流:是对一个已经存在的流的连接和封装,通过所封装的流的功能调用实现数据读、写功能。处理流也称过滤流,如缓冲处理流BufferedReader 。