JAVA NIO 翻译系列(四、Scatter和Gather)

NIO的分散写与集中读,前面的文章说过 channel都是跟buffer紧密相关的,分散写就是将channel的数据写入到多个buffer中,集中读刚好相反。

分散写的图解:


Java NIO: Scattering Read

直接看代码列子吧,每行都注释的很清楚了,


注意:这个例子,其实文件并没有读完

下面是上面的代码执行结果,可以参考


结果


集中读的图解,与上面的相反:


Java NIO: Gathering Write

代码片段:

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中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容