WEB开发网
开发学院软件开发Java 深入理解Apache Mina (6)---- Java Nio Byt... 阅读

深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

 2009-09-16 00:00:00 来源:WEB开发网   
核心提示: 上图简单的表示了容量、极限、位置在缓存区中的位置,其中极限只能标记容量以内的位置,深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别(2),即极限值的大小不能超过容量,同样位置是用来标记程序对缓存区进行读或写操作的开始位置

深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

上图简单的表示了容量、极限、位置在缓存区中的位置。其中极限只能标记容量以内的位置,即极限值的大小不能超过容量。同样位置是用来标记程序对缓存区进行读或写操作的开始位置。程序只能在极限以内的范围进行读写,即读写操作不能超过极限的范围,所以位置值的大小也不能超过极限。三者的大小关系为:容量> 极限 > 位置 >=0 。

上面说到ByteBuffer 的三个属性只是缓存区的标记位置。那么如何改变这些标记的位置呢? ByteBuffer 提供了一下三种方法来改变上面的属性值。

1) clear():极限设置为容量,位置设为 0 。

2) flip():极限设为位置,位置设为 0 。

3)rewind():不改变极限,位置设为 0 。

Java代码   

// JDK没有提供ByteBuffer的公开构造方法只能通过该 
      // 方法来创建一个缓存区。   
 ByteBuffer buffer = ByteBuffer.allocate(1024); 
 // ========测试缓存读写一个字符串=======// 
  String userName ="chinaestone"; 
  char[] charArray = userName.toCharArray(); 
  
  System.out.println("这是往缓存中存放的 字符串"); 
  for(int i=0;i<charArray.length;i++){ 
  System.out.println(charArray[i]); 
  buffer.putChar(charArray[i]); 
  } 
  
  buffer.limit(buffer.position()); 
  buffer.position(0); 
  
  System.out.println(); 
  System.out.println("这是缓存中取出来的 字符串"); 
  while(buffer.hasRemaining()){ 
  System.out.println(buffer.getChar()); 
  }
 

Tags:深入 理解 Apache

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接