6、NIO--分散讀取與聚集寫入
阿新 • • 發佈:2019-05-07
ray 數據 size pri bsp ech arr cep new
分散讀取
分散讀取(Scattering Reads)是指從 Channel 中讀取的數據“分
散”到多個 Buffer 中。
註意:按照緩沖區的順序,從 Channel 中讀取的數據依次將 Buffer 填滿。
聚集寫入
聚集寫入(Gathering Writes)是指將多個 Buffer 中的數據“聚集”
到 Channel
註意:按照緩沖區的順序,寫入 position 和 limit 之間的數據到 Channel 。
測試小實例:
//分散讀取和聚集寫入 @Test public voidtest7() throws IOException { RandomAccessFile raf = new RandomAccessFile("d:\\a.txt","rw"); //1、獲取通道 FileChannel fileChannel = raf.getChannel(); //2、分配指定大小的緩沖區 ByteBuffer buf1= ByteBuffer.allocate(20); ByteBuffer buf2 = ByteBuffer.allocate(200); //3、分散讀取 ByteBuffer [] bufs = {buf1,buf2}; //read(ByteBuffer[] dsts) fileChannel.read(bufs); for(ByteBuffer b : bufs){ b.flip(); } System.out.println(new String(bufs[0].array(),0,bufs[0].limit())); System.out.println(new String(bufs[1].array(),0,bufs[1].limit())); //聚集寫入 RandomAccessFile raf2 = new RandomAccessFile("d:\\aa.txt", "rw"); FileChannel fileChannel2 = raf2.getChannel(); //write(ByteBuffer[] srcs) fileChannel2.write(bufs); }
控制臺的打印:
文件的寫入:
6、NIO--分散讀取與聚集寫入