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

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

 2009-10-28 00:00:00 来源:WEB开发网   
核心提示: 图6 将limit设为2的缓冲区状态在这时position的值等于limit,就不能访问缓冲区的当前数据,Java网络编程从入门到精通(34):读写缓冲区中的数据---使用get和put方法按顺序读写单个数据(5),也就是说不能使用get和put方法,否则将抛出BufferOverflowExc

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

图6  将limit设为2的缓冲区状态

在这时position的值等于limit,就不能访问缓冲区的当前数据,也就是说不能使用get和put方法。否则将抛出BufferOverflowException异常。由于使用allocate创建的缓冲区并不是一次性地分配内存空间,因此,可以将缓冲区的capacity设为很大的值,如10M。缓冲区过大可能在某些环境中会使系统性能降低(如在PDA或智能插秧机中),因此,可以使用limit方法根据具体的情况来限定缓冲区的大小。当然,limit还可以表示缓冲区中实际的数据量,这将在后面讲解。下面的代码演示了如何使用limit方法来枚举缓冲区中的数据:

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

我们还可以用flip和hasRemaining方法来重写上面的代码。flip方法将limit设为缓冲区的当前位置。当limit等于position时,hasRemaining方法返回false,而则返回true。 flip和hasRemaining方法的定义如下:

public final Buffer flip()
public final boolean hasRemaining() 

下面的代码演示了如何使用hasRemaining方法来枚举缓冲区中的数据:

while(byteBuffer.hasRemaining())
    System.out.println(byteBuffer.get());

如果从缓冲区的第一个位置依次使用put方法向缓冲区写数据,当写完数据后,再使用flip方法。这样limit的值就等于缓冲区中实际的数据量了。在网络中传递数据时,可以使用这种方法来设置数据的结束位置。

上一页  1 2 3 4 5 6  下一页

Tags:Java 网络编程 入门

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