leonmau 发表于 2013-1-19 04:08:13

【转载】JAVA NIO 简介

原文链接:http://www.iteye.com/topic/834447
1.  基本概念
IO是主存和外部设备(硬盘、终端和网络等)拷贝数据的过程。IO是操作系统的底层功能实现,底层通过I/O指令进行完成。
所有语言运行时系统提供执行I/O较高级别的工具。(c的printf scanf,java的面向对象封装)
2.  Java 标准io回顾
Java标准IO类库是io面向对象的一种抽象。基于本地方法的底层实现,我们无须关注底层实现。 InputStream\OutputStream(字节流):一次传送一个字节。 Reader\Writer(字符流):一次一个字符。
3.  nio简介
nio是java New IO的简称,在jdk1.4里提供的新api。Sun官方标榜的特性如下:
–    为所有的原始类型提供(Buffer)缓存支持。
–    字符集编码解码解决方案。
–    Channel:一个新的原始I/O抽象。
–    支持锁和内存映射文件的文件访问接口。
–    提供多路(non-bloking)非阻塞式的高伸缩性网络I/O。
本文将围绕这几个特性进行学习和介绍。
4. Buffer&Chanel
Channel和buffer是NIO是两个最基本的数据类型抽象。
Buffer:
–       是一块连续的内存块。
–       是NIO数据读或写的中转地。
Channel:
–       数据的源头或者数据的目的地
–       用于向buffer提供数据或者读取buffer数据,buffer对象的唯一接口。
–       异步I/O支持

http://dl.iteye.com/upload/attachment/361546/f4a0aefc-127c-3c9e-975f-36cce5173a35.jpg
图1:channel和buffer关系
 
 
例子1:CopyFile.java:

<span style="font-size: small;"><div class="dp-highlighter"><div class="bar"><div class="tools">Java代码
页: [1]
查看完整版本: 【转载】JAVA NIO 简介