关于NIO

来自Wikioe
Eijux讨论 | 贡献2020年12月31日 (四) 22:01的版本
跳到导航 跳到搜索


关于

Java NIO,即“New I/O”(另一说“No-Blocking I/O”),从JDK1.4开始提供的一系列改进的输入/输出处理,这些类都被放在java.nio包及子包下:

Java.nio相关包.png
  • NIO采用内存映射文件的方式来处理输入输出:NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件了。
  • NIO与标准IO不同:NIO支持面向缓冲区的、基于通道的IO操作,以更加高效的方式进行文件的读写操作。
  • (“旧”的I/O包已经使用NIO重新实现过,“即使我们不显式的使用NIO编程,也能从中受益”)
IO NIO

(为什么学习NIO)

IO操作往往在两个场景下会用到:

  1. 文件I/O
  2. 网络I/O:NIO的优势体现;

NIO

Java NIO 由以下几个核心部分组成:

  1. Buffer”:
  2. Channel”:
  3. Selector”:

NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据:
(传统的IO的操作面向数据流:每次从流中读一个或多个字节,直至完成,不涉及数据缓存)


Buffer

Channel

Selector

NIO 与 IO