NIO的分散写与集中读,前面的文章说过 channel都是跟buffer紧密相关的,分散写就是将channel的数据写入到多个buffer中,集中读刚好相反。
分散写的图解:
直接看代码列子吧,每行都注释的很清楚了,
下面是上面的代码执行结果,可以参考
集中读的图解,与上面的相反:
代码片段:
ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
//write data into buffers
ByteBuffer[] bufferArray = { header, body };
channel.write(bufferArray);
buffers数组被传入到write方法的参数中,write方法会按照顺序将数组里面的buffer内容写入到channel中。buffer里面有多少数据则会写多少数据进去,比如讲一个buffer的capacity大小为127,但是实际上只有58个bytes,则只会写入58个bytes到channel中。