概念

  • java.nio.channels.Channels 包定义的,通道Channel表示IO源与目标打开的连接,Channel类似于传统的,但Channel本身不能直接访问数据,Channel只能与Buffer进行交互

  • 通道表示打开到 IO 设备(例如:文件、套接字)的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理。

  • Channel相比IO中的Stream更加高效,可以异步双向传输,但是必须和buffer一起使用。

  • 主要实现类

    • FileChannel,读写文件中的数据。
    • SocketChannel,通过TCP读写网络中的数据。
    • ServerSockectChannel,监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
    • DatagramChannel,通过UDP读写网络中的数据。

补充

  • FileChannel不能切换成非阻塞模式

参考