NIO的Channel

NIO的Channel教程

Channel 就是通道的意思,它就是一个对象,通过它可以读取和写入数据。将数据从缓冲区的一侧传递到另一侧实体,比如文件或者套接字。反方向也是可以的。当然 Channel 离开了 Buffer 是没有意义的,所有的数据都会被维护在 Buffer 中。

Channel描述

Channel 可以理解为现实生活中的高速公路,它是双车道,channel 的一头永远是 Buffer。我们通过 Channel 将数据写入 Buffer。Channel 不是存储对象。如果实在是很难理解,我们就可以简单粗暴的将 Channel 理解为一个传输介质,就是将数据往 Buffer 里面写或者把数据往 Buffer 里面读。

  • 从通道进行数据读取:创建一个缓冲区,然后请求通道读取数据。
  • 从通道进行数据写入:创建一个缓冲区,填充数据,并要求通道写入数据。

04 Channel.png

Channel分类

最常用的 Channel 有下面几个类:

  • FileChannel 文件通道。
  • SocketChannel 通过 TCP 读写网络中的数据。
  • ServerSocketChannel TCP 服务端,可以读写网络中的数据,可以监听新进来的 TCP 连接。
  • DatagramChannel 通过 UDP 读写网络中的数据。

各个 Channel 指责分明。

Channel 总结

本章,我们对 Channel 进行简单的描述,知道了 Channel 的作用,它是进行数据传送的,其中依靠于 Buffer。将数据往缓冲区里面写或者读。它是双向的,比阻塞 IO 中面向流的操作快。