给大忙人们看的Java NIO教程之Channel

  点击上方“JavaEdge”,关注公众号

设为“星标”,好文章不错过!


Java NIO的Channel类似流,但有不同:

  • 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的

  • 通道可以异步读写

  • 通道中的数据总是要先读到一个Buffer,或要从一个Buffer中写入

给大忙人们看的Java NIO教程之Channel

从Channel读数据到缓冲区,从缓冲区写数据到Channel 

给大忙人们看的Java NIO教程之Channel

                                         给大忙人们看的Java NIO教程之Channel


给大忙人们看的Java NIO教程之Channel

Channel的实现

给大忙人们看的Java NIO教程之Channel


Java NIO中最重要的通道的实现:

  • FileChannel 从文件中读写数据。

  • DatagramChannel 通过UDP读写网络中的数据。

  • SocketChannel 通过TCP读写网络中的数据。

  • ServerSocketChannel 监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。


给大忙人们看的Java NIO教程之Channel

Channel 示例

给大忙人们看的Java NIO教程之Channel


下面是一个使用FileChannel读取数据到Buffer中的示例:

给大忙人们看的Java NIO教程之Channel

注意 buf.flip(),首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。

参考

  • http://tutorials.jenkov.com/java-nio/channels.html

往期推荐

阿里P8架构师教你kill代码重复/大量ifelse

一文讲清RedisCluster

阿里Java架构师教你写代码-如何校验参数?

你真的深知JWT(JSON Web Token)了吗?

OAuth 2.0实战(一)-通俗光速入门

给大忙人们看的Java NIO教程之Channel

目前交流群已有 800+人,旨在促进技术交流,可关注公众号添加笔者微信邀请进群

给大忙人们看的Java NIO教程之Channel

喜欢文章,点个“在看、点赞、分享”素质三连支持一下~