码迷,mamicode.com
首页 > 编程语言 > 详细

Java-NIO(六):Channel聚集(gather)写入与分散(scatter)读取

时间:2017-07-31 18:46:30      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:get   cat   exce   print   throws   技术   sys   getc   code   

  • Channel聚集(gather)写入:

聚集写入( Gathering Writes)是指将多个 Buffer 中的数据“聚集”到 Channel。 特别注意:按照缓冲区的顺序,写入 position limit 之间的数据到 Channel 。 

技术分享

  • Channel分散(scatter)读取:

分散读取( Scattering Reads)是指从 Channel 中读取的数据“分散” 到多个 Buffer 中。 特别注意:按照缓冲区的顺序,从 Channel 中读取的数据依次将 Buffer 填满。

技术分享

  • 聚集写入( Gathering Writes)和分散读取( Scattering Reads测试:
 1 @Test
 2     public void testGatherScatter() throws IOException {
 3         RandomAccessFile randomAccessFile = new RandomAccessFile("d:\\ce.txt", "rw");
 4         // 获取通道
 5         FileChannel channel = randomAccessFile.getChannel();
 6 
 7         // 申请缓存空间
 8         ByteBuffer byteBuffer00 = ByteBuffer.allocate(128);
 9         ByteBuffer byteBuffer01 = ByteBuffer.allocate(1024);
10 
11         // 通过channel.read(ByteBuffer[] byteBuffers),将数据分散读取到byteBuffer00,byteBuffer01
13         ByteBuffer[] byteBuffers = { byteBuffer00, byteBuffer01 };
14         channel.read(byteBuffers);
15 
16         for (ByteBuffer byteBuffer : byteBuffers) {
17             byteBuffer.flip();
18         }
19 
20         System.out.println(new String(byteBuffers[0].array(), 0, byteBuffers[0].limit()));
21         System.out.println("-----------------------------------------------------------");
22         System.out.println(new String(byteBuffers[1].array(), 0, byteBuffers[1].limit()));
23 
24         // 聚集写入
25         RandomAccessFile randomAccessFile2 = new RandomAccessFile("d:\\ce_copy.txt", "wr");
26         // 1、获取管道
27         FileChannel channel2 = randomAccessFile2.getChannel();
28 
29         // 2、通过管道将数据写入
30         channel2.write(byteBuffers);
31 
32         channel2.close();
33         channel.close();
34     }

 

Java-NIO(六):Channel聚集(gather)写入与分散(scatter)读取

标签:get   cat   exce   print   throws   技术   sys   getc   code   

原文地址:http://www.cnblogs.com/yy3b2007com/p/7264647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!