# IO流
IO = 流,它的核心就是对文件的操作,对于 字节 、字符类型的输入和输出流。
IO是指对数据流的输入和输出,也称为IO流,IO流主要分为两大类,字节流和字符流。 字节流可以处理任何类型的数据,如图片,视频等, 字符流只能处理字符类型的数据。
IO流的本质是数据传输,并且流是单向的。
常用的字节流FileInputStream、FileOutputStream、ObjectInputStream、ObjectOutputStream。
IO分阻塞型IO和非阻塞型IO(NIO)
阻塞型IO在读取数据时,如果数据未到达,会一直阻塞到读取到数据为止,所以称为阻塞型IO,在高并发的环境下性能不佳。
NIO不是使用 “流” 来作为数据的传输方式,而是使用通道,通道的数据传输是双向的,且NIO的数据写入和读取都是异步的,不会阻塞线程,所以称为非阻塞型IO,在高并发的环境下性能很好。
# Java流操作的相关类或接口
File -- 文件类
RandomAccessFile -- 随机存储文件类
InputStream -- 字节输入流
OutputStream -- 字节输出流
Reader -- 字符输入流
Writer -- 字符输出流
# Java流类图结构
# 流的概念和作用
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在设备间传输称之为流。
流的本质是数据传输,根据数据传输的特性将流区分为各种类,方便更直观的进行数据操作。
# IO流的分类
根据数据处理的不同类型分为:字节流和字符流
根据数据流向不同分为:输入流和输出流
# 字符流和字节流
字符流的由来:因为数据编码的不同,而有了对字符进行高效操作的流对象,本质上其实就是对于字节流的读取时,去查了指定的码表。
字节流和字符流的区别:
· 读写单位的不同:字节流以字节(8bit)为单位。字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
· 处理对象不同:字节流可以处理任何类型的数据,如图片、avi等,而字符流只能处理字符类型的数据。
# 输入流和输出流
对于输入流只能进行读操作。
对于输出流只能进行鞋操作。
程序中需要对于传输数据的不同特性而使用不用的流。
关于评论
评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!