WEB开发网
开发学院软件开发Java Java网络编程从入门到精通(34):读写缓冲区中的... 阅读

Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据

 2009-10-28 00:00:00 来源:WEB开发网   
核心提示: 为了回顾上面所讲内容,下面的代码总结了创建缓冲区、读写缓冲区中的数据、设置缓冲区的limit和position的方法,Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据(6),packagenet;importjava.nio.*;public

为了回顾上面所讲内容,下面的代码总结了创建缓冲区、读写缓冲区中的数据、设置缓冲区的limit和position的方法。

  package net;
  
  import java.nio.*;
  
  public class GetPutData
  {
      public static void main(String[] args)
      {
          // 创建缓冲区的四种方式
          IntBuffer intBuffer = IntBuffer.allocate(10);
          ByteBuffer byteBuffer = ByteBuffer.allocateDirect(10);
          CharBuffer charBuffer = CharBuffer.wrap("abcdefg");
          DoubleBuffer doubleBuffer = DoubleBuffer.wrap(new double[] { 1.1, 2.2 });
          
          // 向缓冲区中写入数据
          intBuffer.put(1000);
          intBuffer.put(2000);
          
          System.out.println("intBuffer的当前位置:" + intBuffer.position());
          
          intBuffer.position(1);  // 将缓冲区的当前位置设为1
          System.out.println(intBuffer.get());  // 输出缓冲区的当前数据
          
          intBuffer.rewind();  // 将缓冲区的当前位置设为0
          System.out.println(intBuffer.get());  // 输出缓冲区的当前数据
          
          byteBuffer.put((byte)20);
          byteBuffer.put((byte)33);
          byteBuffer.flip();   // 将limit设为position,在这里是2
          byteBuffer.rewind(); 
          while(byteBuffer.hasRemaining())  // 枚举byteBuffer中的数据
              System.out.print(byteBuffer.get() + " ");
          
          while(charBuffer.hasRemaining())  // 枚举charBuffer中的数据
              System.out.print(charBuffer.get() + " ");
  
          // 枚举doubleBuffer中的数据
          while(doubleBuffer.position() < doubleBuffer.limit())
              System.out.print(doubleBuffer.get() + " ");
  
      }
  }

运行结果:  

intBuffer的当前位置:2
2000
1000
20 33 a b c d e f g 1.1 2.2

注意:如果必须使用缓冲区的大小来读取缓冲区的数据,尽量不要使用capacity,而要使用limit。如尽量不要写成如下的代码:

while(byteBuffer.position() < byteBuffer.capacity())
    System.out.println(byteBuffer.get());

这是因为当limit比capacity小时,上面的代码将会抛出一个BufferUnderflowException异常。

上一页  1 2 3 4 5 6 

Tags:Java 网络编程 入门

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