IO基础
流: 是指一串流动的数据,是以先进先出方式发送信息的通道.通过流的方式允许Java程序使用相同的方式来访问不同的输入输出源.
java流分为三种
(1)按流的方向:输入流和输出流
输入流:数据从数据源流动到Java程序
输出流:数据从Java程序流动到数据源
(2)按处理数据的大小:字节流和字符流
字节流:从流中读/写的读取的数据以字节为单位.
优点:读取数据效率高,并且保持数据的完整性.
字符流:从流中读/写的读取的数据以字符为单位.
(3)按功能:节点流和处理流
节点流:用于从/向一个特定的物理IO设备(磁盘,网络端口)读/写数据的流.
如何判断节点流:直接以物理IO节点作为构造器参数的流对象就是节点流.
处理流:在已经存在的流(节点流或者处理流)进行封装之后构造的流称为处理流.
优点:处理流对节点流(或处理流)进行装饰,消除不同节点流之间的差异性,提供更强大的读写能力
java的I/O类结构:
javaIO流共涉及40多个类,都是从四个抽象基类派生出来的.
(1)InputStream:字节输入流的基类.
InputStream的所有子类只有FileInputStream是节点流,其他的都是处理流.
(2)Reader:字符输入流的基类
Reader的所有子类只有FileReader是节点流,其他的都是处理流.
(3)OutputStream:字节输出流的基类
OutputStream的所有子类只有FileOutputStream是节点流,其他的都是处理流.
(4)Writer:字符输出流的基类
Writer的所有子类中,FileWriter和PrintWriter是节点流,其他的是处理流.
File类封装了文件本身的一些信息和操作,不涉及对文件内容的读写操作.
FileInputStream是InputStream的子类,可以顺序的读取文件,只要不关闭流,每次调用read方法就顺序的读取文件中的其余内容,知道文件的末尾或者文件字节输入流被关闭.