一、流的概念:在 Java中所有数据都是使用流读写的。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
二、什么是输入流和输出流
输入流:就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中。
输出流:将数据写入到各种输出设备(比如文件、显示器、磁盘等)。例如键盘就是一个标准的输入设备,而显示器就是一个标准的输出设备
文件既可以作为输入设备,又可以作为输出设备。
所有输入流都是直接或间接继承自InputStream抽象类,所有输出流都是直接或间接继承自OutputStream抽象类,且大部分都是成对存在的有XXXInputStream那么就有XXXOutputStream,例如FileInputStream和FileOutputStream、BufferedInputStream和BufferedOutputStream,但是SequenceInputStream和StringBufferOutputStream是特例。
三、常见的流
1.字节流:可以处理所有已bit为单位储存的文件,即可以处理所有文件图片,视频,音频等,但是处理字符上(纯文本)的速度不如字符流。
2.字符流:只能处理字符流,且处理效率很高。所有的字符输出流都是Writer的子类,所有的字符输入流都是Reader的子类。和字节输入输出流一样,都是成对存在的。XXXWriter和XXXReader。