java给我们封装好了很多的类,IO在以后的开发还算常用。
目前狂神老师还没有推出此类课程,我自己来学学
0.IO框图
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的子类都是装饰流。