“关于NIO”的版本间差异
跳到导航
跳到搜索
无编辑摘要 |
无编辑摘要 |
||
第1行: | 第1行: | ||
[[category:Java]] | [[category:Java]] | ||
== 关于 == | |||
Java NIO,即“'''New I/O'''”(另一说“'''No-Blocking I/O'''”),从JDK1.4开始提供的一系列改进的输入/输出处理,这些类都被放在java.nio包及子包下: | |||
:[[File:java.nio相关包.png|400px]] | |||
* NIO采用'''内存映射文件'''的方式来处理输入输出:NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件了。 | |||
* NIO与标准IO不同:'''NIO支持面向缓冲区的、基于通道的IO操作''',以更加高效的方式进行文件的读写操作。 | |||
*(“旧”的I/O包已经使用NIO重新实现过,“即使我们不显式的使用NIO编程,也能从中受益”) | |||
{| class="wikitable" | |||
! IO !! NIO | |||
|- | |||
| | |||
| | |||
|- | |||
| | |||
| | |||
|} | |||
===(为什么学习NIO)=== | |||
IO操作往往在两个场景下会用到: | |||
# 文件I/O | |||
# 网络I/O:NIO的优势体现; | |||
== NIO == | |||
Java NIO 由以下几个核心部分组成: | |||
# “'''Buffer'''”: | |||
# “'''Channel'''”: | |||
# “'''Selector'''”: | |||
NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据:<br/> | |||
(传统的IO的操作面向数据流:每次从流中读一个或多个字节,直至完成,不涉及数据缓存) | |||
=== Buffer === | |||
=== Channel === | |||
=== Selector === | |||
== NIO 与 IO == |
2020年12月31日 (四) 22:01的版本
关于
Java NIO,即“New I/O”(另一说“No-Blocking I/O”),从JDK1.4开始提供的一系列改进的输入/输出处理,这些类都被放在java.nio包及子包下:
- NIO采用内存映射文件的方式来处理输入输出:NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件了。
- NIO与标准IO不同:NIO支持面向缓冲区的、基于通道的IO操作,以更加高效的方式进行文件的读写操作。
- (“旧”的I/O包已经使用NIO重新实现过,“即使我们不显式的使用NIO编程,也能从中受益”)
IO | NIO |
---|---|
(为什么学习NIO)
IO操作往往在两个场景下会用到:
- 文件I/O
- 网络I/O:NIO的优势体现;
NIO
Java NIO 由以下几个核心部分组成:
- “Buffer”:
- “Channel”:
- “Selector”:
NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据:
(传统的IO的操作面向数据流:每次从流中读一个或多个字节,直至完成,不涉及数据缓存)