JAVA基础之——JDK分析io、nio
在哪儿:jdk\jre\lib\rt.jar
package java.io;
package java.nio;
1 分类
1.1 IO
持久化序列化对象并压缩步骤
new FileOutputStream 文件输出流,用于向文件进行写入操作。
BufferedOutputStream缓冲输出流,为另外一个输出流添加缓冲功能。
ZipOutputStream
ObjectOutputStream对象输出流,用来对基本数据或对象提供持久化存储。
writeObject
1.2 NIO
1.2.1 channels:包含socket file pipe三种管道
1.2.2 buffer
Buffer CharBuffer DoubleBuffer FloatBuffer IntBuffer LongBuffer ShortBuffer
1.2.3 charset字符编码
CharsetDecoder将字节转换成字符序列
CharsetEncoder将字符序列转换成字节
1.2.4 selector
2 区别
| IO | 面向流 | 阻塞IO | |
| NIO | 面向缓存 | 非阻塞IO | 选择器 |
3 阻塞和非阻塞区别
IO阻塞:当某个事件执行时,如果请求操作未满足,则一直阻塞,直至条件满足。
NIO非阻塞:当某件事件执行时,如果请求操作未满足,不会一直阻塞,而是会立即返回一个标志信息告知条件不满足。
4 应用场景
NIO比IO读取效率高,缺陷是NIO是面向缓冲区的操作,处理之前必须对缓冲区数据的完整性进行判断,如果数据不完整的话,NIO的读取就不存在任何意义,因此NIO每次数据处理之前都要检测缓冲区数据的完整性。
如果管理的是成千上万个连接,但是这些连接每次只是发送少量的数据,例如我们常用的聊天服务器,选择NIO。
如果是少量连接,而这些连接每次都要发送大量的数据,选择IO。

浙公网安备 33010602011771号