IO流用于处理设备之间数据的传输,并不局限于内存和文件之间
数据从一个位置流到另一个位置叫做数据流
以程序为中心(或者说从内存的角度)进行分析问题,把数据读到程序中(内存中)叫做输入,把数据从内存当中写出到磁盘当中,或者进行网络传输出去叫输出。
字符流: 操作数据的基本单位是2个字节(即1个char),适合处理文本数据。
字节流: 操作数据的基本单位是1个字节,适合处理图片,视频等
比如现在有个.txt文件,想把这个文件的数据读到内存中,这个文件中每一个位置都是字符
节点流: 比如说想把文件中的数据加载到内存层面,直接就在文件和内存之间造了一个流,即直接作用在文件上的流叫做节点流
处理流: 这种流作用在已有流的基础之上。在节点流的基础之上又包了一层,即里面的流的对象作为参数给了外面流的构造器。可以包很多层,在已有的流的基础上包的流叫做处理流,包住节点流的流都叫处理流
处理流有很多种,作用不一样,是外面包的这层流叫做处理流,不是一起叫做处理流。
注意:抽象类中不一定会有抽象方法
直接可以操作File的流:节点流,又叫做文件流
带有stream的是字节流,带有reader或者writer的是字符流
用flush的时候不管数据有没有装满缓冲区都会写出去,通常处理流都会有flush方法
缓冲流会自动flush
有的处理流没有自动去flush,我们就要考虑去显示的写。