查看“关于NIO”的源代码
←
关于NIO
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
[[category:Java]] == 关于 == Java NIO,即“'''New I/O'''”(另一说“'''No-Blocking I/O'''”):采用'''内存映射文件'''的方式来处理输入输出:NIO将文件或文件的一段区域映射到内存中,这样就可以像访问内存一样访问文件了。 *(相关内容:[http://tutorials.jenkov.com/java-nio/index.html?spm=a2c6h.12873639.0.0.3e1ba7fdKRM8ja Java NIO Tutorial],网上资料大多来自于此) === 与 IO === NIO与标准IO不同:'''NIO支持面向缓冲区的、基于通道的IO操作''',以更加高效的方式进行文件的读写操作。 *(“旧”的I/O包已经使用NIO重新实现过,“即使我们不显式的使用NIO编程,也能从中受益”) *(NIO子系统不会取代java.io包中可用的基于流的I/O类) {| class="wikitable" ! IO !! NIO |- | 面向流(Stream Oritented) | 面向缓冲区(Buffer Oritented) |- | 阻塞IO(Blocking IO) | 非阻塞IO(None Blocking IO) |- | 无 | 选择器(Selecters) |} === NIO 包 === 从JDK1.4开始提供的一系列改进的输入/输出处理,这些类都被放在java.nio包及子包下: :[[File:java.nio相关包.png|300px]] {| class="wikitable" ! 包名称 !! 使用/目的 |- | java.nio || NIO系统的顶级包,NIO系统封装了各种类型的缓冲区。 |- | java.nio.charset || 封装了字符集,并且还支持分别将字符转换为字节和字节到编码器和解码器的操作。 |- | java.nio.charset.spi || 用于支持字符集服务提供者 |- | java.nio.channels || 支持通道,这些通道本质上是打开I/O连接。 |- | java.nio.channels.spi || 用于支持频道的服务提供者 |- | java.nio.file || 提供对文件的支持 |- | java.nio.file.spi || 用于支持文件系统的服务提供者 |- | java.nio.file.attribute || 用于提供对文件属性的支持 |} ===(为什么学习NIO)=== IO操作往往在两个场景下会用到: # 文件I/O # 网络I/O:NIO的优势体现; == IO:同步、异步,阻塞、非阻塞 == (见[https://blog.csdn.net/historyasamirror/article/details/5778378 IO - 同步,异步,阻塞,非阻塞 (亡羊补牢篇)])<br/> == NIO 组件 == Java NIO 由以下几个核心部分组成: # “'''Buffer'''”: # “'''Channel'''”: # “'''Selector'''”: NIO操作面向缓冲区,数据从Channel读取到Buffer缓冲区,随后在Buffer中处理数据:<br/> (传统的IO的操作面向数据流:每次从流中读一个或多个字节,直至完成,不涉及数据缓存) === Channel === === Buffer === === Selector === == Scatter / Gather == 分散(scatter) 聚集(gather) == Channel to Channel Transfers == == 常用Channel == FileChannel DatagramChannel SocketChannel ServerSocketChannel == Java NIO非阻塞式服务器 == == 其他 == Pipe Path Files AsynchronousFileChannel
返回至“
关于NIO
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
已展开
已折叠
查看
阅读
查看源代码
查看历史
更多
已展开
已折叠
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
笔记
服务器
数据库
后端
前端
工具
《To do list》
日常
阅读
电影
摄影
其他
Software
Windows
WIKIOE
所有分类
所有页面
侧边栏
站点日志
工具
链入页面
相关更改
特殊页面
页面信息