面试知识点总结之I/O流IO/BIO/NIO/AIO区别

程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件

1. 字节流主要操作byte类型数据,以bate数组为准,主要操作类 OutputStream, InputStream

  程序->字节流->文件    直接操作文件

2. 字符流:字符流在操作时使用了缓冲区,通过缓冲区再去操作文件 缓冲区(理解为一种内存区域) 提升性能的

  程序->字符流->缓存->文件  数据先放在缓存,之后再从缓存写入文件

本质区别:字节流是原生的操作,而字符流是经过处理后的操作;网络数据传输,磁盘数据保存所支持的数据类型只有’字节‘,而子盘中的数据必须先读取到内存后才能进行操作,而内存中会帮助我们把字节变为字符,字符更适合处理中文

字符流,不关闭有可能保存在缓存中斌没有输出目标源

转换流

OutputStreamWriter:字符流->字节流

InputStreamReader:字节流->字符流

IO/BIO/NIO/AIO区别:

BIO:同步且阻塞,服务器实现模式,即一个链接一个线程,客户端有链接请求时启动一个线程处理,如果连接不做事,造成不必要的开销,当然可以通过线程池改善;

NIO:同步非阻塞,即一个请求一个线程,客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理

AIO:异步非阻塞,一个有效请求一个线程,客户端的I/O请求都是OS先完成了再通知服务器应用去启动线程处理

// TODO

原文地址:https://www.cnblogs.com/cgy-home/p/14525955.html