正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:

Channel的实现
这些是Java NIO中最重要的通道的实现:
FileChannel DatagramChannel SocketChannel ServerSocketChannel
FileChannel 从文件中读写数据。
DatagramChannel 能通过UDP读写网络中的数据。
SocketChannel 能通过TCP读写网络中的数据。
ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
基本的 Channel 示例
下面是一个使用FileChannel读取数据到Buffer中的示例:
01    RandomAccessFile aFile = new RandomAccessFile("data/nio-data.txt", "rw");    
02    FileChannel inChannel = aFile.getChannel();    
03    
04    ByteBuffer buf = ByteBuffer.allocate(48);    
05    
06    int bytesRead = inChannel.read(buf);    
07    while (bytesRead != -1) {    
08    
09    System.out.println("Read " + bytesRead);    
10    buf.flip();    
11    
12    while(buf.hasRemaining()){    
13    System.out.print((char) buf.get());    
14    }    
15    
16    buf.clear();    
17    bytesRead = inChannel.read(buf);    
18    }    
19    aFile.close();注意 buf.flip() 的调用,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。下一节会深入讲解Buffer的更多细节。
转载自:http://ifeve.com/channels/
Java NIO系列教程(一) Java NIO 概述
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=508
Java NIO系列教程(三) Buffer
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=510
Java NIO系列教程(四) Scatter/Gather
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=511
Java NIO系列教程(五) 通道之间的数据传输
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=512
Java NIO系列教程(六) Selector
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=513
Java NIO系列教程(七) FileChannel
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=514
Java NIO系列教程(八) SocketChannel
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=516
Java NIO系列教程(九) ServerSocketChannel
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=517
Java NIO系列教程(十) Java NIO DatagramChannel
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=518
Java NIO系列教程(十一) Pipe
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=520
Java NIO系列教程(十二) Java NIO与IO
http://wisdomdd.cn/Wisdom/resource/articleDetail.htm?resourceId=519