给大忙人们看的Java NIO教程之Channel
点击上方“JavaEdge”,关注公众号
设为“星标”,好文章不错过!
Java NIO的Channel类似流,但有不同:
既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的
通道可以异步读写
通道中的数据总是要先读到一个Buffer,或要从一个Buffer中写入
从Channel读数据到缓冲区,从缓冲区写数据到Channel
Channel的实现
Java NIO中最重要的通道的实现:
FileChannel 从文件中读写数据。
DatagramChannel 通过UDP读写网络中的数据。
SocketChannel 通过TCP读写网络中的数据。
ServerSocketChannel 监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
Channel 示例
下面是一个使用FileChannel读取数据到Buffer中的示例:
注意 buf.flip()
,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。
参考
http://tutorials.jenkov.com/java-nio/channels.html
往期推荐
目前交流群已有 800+人,旨在促进技术交流,可关注公众号添加笔者微信邀请进群
喜欢文章,点个“在看、点赞、分享”素质三连支持一下~