【概述】
Java的IO流是实现输入/输出的基础,它可以方便的实现数据的输入/输出操作。
Java中把不同的输入/输出源(键盘、文件、网络连接)抽象表述为"流"(Stream)。
【流的分类详细】
[ 输入流---输出流 ]
按照流的流向,可以将流分为输入流和输出流。
输入流:从其中读取数据
输出流:向其种写入数据
注意:划分输入/输出流是从程序运行时的所在的内存的角度来划分的。
输入流常用的基础类:InputStream和Reader
输出流常用的基础类:OutputStream和Writer
注意:这些积累都是抽象类,无法直接实例化。
[ 字节流---字符流 ]
字节流和字符流的内的方法几乎一样,区别仅仅是其操作的数据单元大小不同,
字节流的数据操作单元: 8位的字节
字符流的数据操作单元: 16位的字节
字节流常用的基础类:InputStream和OutputStream
字符流常用的基础类:Reader和Writer
[ 节点流---处理流 ]
节点流:从/向一个特定的IO设备(磁盘、网络等)读/写数据的流。节点流也常称为低级流( Low Level Stream )如下。
从图中可以看出,当使用节点流进行输入/输出时,程序直接连接到实际的数据源,和实际的输入/输出节点连接。
处理流:用于对已存在的流进行连接或封装,通过封装后的流来实现对数据的读/写功能。处理流常被称为高级流。
从图中可以看出,使用处理流进行输入/输出时,程序不会直接连接数据源,没有和实际的输入/输出节点连接。
只要使用相同的处理流,程序就可以采用相同的输入/输出代码来访问不同的数据源。
注:Java使用处理流来包装节点流使用了装饰器模式,使用处理流来包装不同的节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出功能。
节点流又称为包装流。
使用处理流的特点:
1.性能提高:主要增加缓冲的方式来提高输入/输出的效率。
2.操作便捷:处理流提供了一系列便捷的方法来一次输入/输出大批量的内容。
3.处理流可以建立在任何已存在的流基础之上,这就允许java应用程序采用相同的代码、透明的方式来访问不同的输入/输出流。
通过使用处理流,Java程序无需理会输入/输出节点是磁盘、网络还是其他输入输出设备,程序只要将这些节点流包装成处理流,就可以使用相同的输入输出代码来读写不同的输入输出设备的数据。