# 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等,而字符流只能处理字符类型的数据。

# 输入流和输出流

对于输入流只能进行读操作。

对于输出流只能进行鞋操作。

程序中需要对于传输数据的不同特性而使用不用的流。

关于评论

评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!