Java NIO Buffer 分散和歸集

Java NIO 支持 分散/聚合模式,分散/聚合用於Channel的讀取和寫入數據。

分散Read

從單一Channel分散讀取數據進入多個Buffer。

Java NIO Buffer 分散和歸集

偽代碼:

ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
ByteBuffer[] bufferArray = { header, body };
channel.read(bufferArray);

分散Reader,當第一個Buffer滿了,會移動到下一個。

聚集Writer

聚集Writer,表示可以從多個Buffer中寫入到單個Channel中。看下面的圖:

Java NIO Buffer 分散和歸集

偽代碼:

ByteBuffer header = ByteBuffer.allocate(128);
ByteBuffer body = ByteBuffer.allocate(1024);
//write data into buffers
ByteBuffer[] bufferArray = { header, body };
channel.write(bufferArray);

將Buffer數組放入writer()方法內,第一個Buffer寫滿了,後面進行第二個Buffer寫入。如果設置128個字節,實際上就58字節,那麼實際上寫入的就是這58個字節。

本文參考:http://tutorials.jenkov.com/java-nio/scatter-gather.html


分享到:


相關文章: