IO
![](IO.assets/IO.JPG)
Java IO 也称为IO流,IO = 流,它的核心就是对文件的操作,对于 字节 、字符类型的输入和输出流。IO是指对数据流的输入和输出,也称为IO流,IO流主要分为两大类,字节流和字符流。字节流可以处理任何类型的数据,如图片,视频等,字符流只能处理字符类型的数据。1.IO流的分类· 根据数据处理的不同类型分为:字节流和字符流· 根据数据流向不同分为:输入流和输出流2.字符流和字节流字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象,本质上其实就是对于字节流的读取时,去查了指定的码表。字节流和字符流的区别:· 读写单位的不同:字节流以字节(8bit)为单位。字符流以字符为单位,根据码表映射字符,一次可能读多个字节。· 处理对象不同:字节流可以处理任何类型的数据,如图片、avi等,而字符流只能处理字符类型的数据。3.字节流1、输入字节流 InputStream从IO中输入字节流的继承图中可以看出。1)InputStream是所有数据字节流的父类,它是一个抽象类。2)ByteArrayInputStream、StringBufferInputStream、FileInputStream是三种基本的介质流,它们分别从Byte数组、StringBuffer、和本地文件中读取数据,PipedInputStream是从与其他线程共用的管道中读取数据。3)ObjectInputStream和所有FileInputStream 的子类都是装饰流(装饰器模式的主角)。2、输出字节流 OutputStream从IO中输入字节流的继承图中可以看出。1)OutputStream是所有输出字节流的父类,它是一个抽象类。2)ByteArrayOutputStream、FIleOutputStream是两种基本的介质,它们分别向Byte 数组,和本地文件中写入数据。PipedOutputStream是从与其他线程共用的管道中写入数据。3)ObjectOutputStream和所有FileOutputStream的子类都是装饰流。