【源码学习】ScatteringByteChannel的read方法

  • ScatteringByteChannel在java.nio.channels包中,继承了AutoCloseable, Channel,
    Closeable, ReadableByteChannel接口
  • 所有的实现类为:DatagramChannel, FileChannel, Pipe.SourceChannel, SocketChannel
  • ScatteringByteChannel是一个通道,可以将Channel中的数据写入Buffer数组中,在网络协议或者文件读写中非常有用。比如把数据按照segment的header指定的长度,写入到对应的body中。
  • ScatteringByteChannel有两个方法:
    • long read​(ByteBuffer[] dsts)
    • long read​(ByteBuffer[] dsts, int offset, int length)
long read​(ByteBuffer[] dsts, int offset, int length) throws IOException
  • dsts是被写入的目标buffer数组
  • offset是目标数组的index,比如dsts的长度是5,offset为3,则从第4个数组开始写入
  • length是最大可访问的数组长度。
    返回读取的byte数量,-1代表通道关闭。
long read​(ByteBuffer[] dsts) throws IOException

上述方法是调用了c.read(dsts, 0, dsts.length);
从第0个数组开始写,可以写的数组长度为dsts.length。

你可能感兴趣的:(源码,学习,read,ByteChannel)