JAVA NIO 翻译系列(二、Channel)

JAVA NIO Channel 跟BIO中的steam有点像,但是又有一些不同点:

1)你可以同时对channel进行读和写,而sream是单向的(读或者写)

2)channel可以读和写是异步的(要不怎么能叫NIO呢   O(∩_∩)O~)

3)无论channel的读还是写,都是跟buffer紧密相关的。

基于上面提到的几点,你可以把数据从channel中读到buffer中,也可以从buffer中把数据写到channel中。


JAVA NIO 翻译系列(二、Channel)_第1张图片
Java NIO: Channels read data into Buffers, and Buffers write data into Channels

Channel 实现类:


JAVA NIO 翻译系列(二、Channel)_第2张图片

FileChannel可以从文件中读数据,也可以写数据到文件中。

DatagramChannel是基于UDP协议的网络的读写

SocketChannel是基于TCP协议的网络读写

ServerSocketChannel用于监听TCP的链接,像web服务器一样,当有一个连接过来的时候,一个SocketChannel就会被创建。

 下面是一个基本的例子代码

JAVA NIO 翻译系列(二、Channel)_第3张图片

注意flip方法,一开始读取数据到buffer中,然后flip它,再get数据。后面会详细讲这个方法。

你可能感兴趣的:(JAVA NIO 翻译系列(二、Channel))