IO流
概念
流是个抽象的概念,是对输入输出设备的抽象。数据以二进制的形式在程序与设备之间流动传输,就像水在管道里流动一样,所以就把这种数据传输的方式称之为输入流、输出流。这里描述的设备,可以是文件、网络、内存等
分类
(1)按数据流向分:
输入流:把数据从其他设备上读取到程序中的流
输出流:把数据从程序中写到其他设备上的流
(2)按数据类型分:
字节流:以字节为单位,读写数据的流
字符流:以字符为单位,读写数据的流
(3)按是否为节点流分:
1、节点流
可以【直接】读取某一个地方的数据,或者【直接】把数据写入到某一个地方。
举例:字节流,字符流
2、非节点流
不能【直接】从某一个地方读数据或写数据,它们每一种都有一些特殊的功能,例如有的可以自动转换基本类型数据为字节,有的可以提高其他流的读写效率,有的可以将字节流转为字符流,有的可以把对象转为字节等。
举例:数据流,缓冲流,转换流,对象流,随机访问流。
流的结构
在Java中,和IO流相关的类,主要是在java.io 包下的定义的。
几乎所有的流,都是派生自四个抽象的父类型:
- InputStream,代表字节输入流类型
- OutputStream,代表字节输出流类型
- Reader,代表字符输入流类型
- Writer,代表字符输出流类型
java中常用的流及其关系结构如下: