Java网络编程从入门到精通(34)[Java编程]
本文“Java网络编程从入门到精通(34)[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
Java网络编程从入门到精通(34):读写缓冲区中的数据---利用get和put办法按次序读写单个数据
关于缓冲区来说,最重要的操作就是读写操作.缓冲区供应了两种办法来读写缓冲区中的数据:get、put办法和array办法.而get、put办法可以有三种读写数据的方法:按次序读写单个数据、在指定位置读写单个数据和读写数据块.除了上述的几种读写数据的办法外,CharBuffer类还供应了用于专门写字符串的put和append办法.在本文及背面的文章中将辨别介绍这些读写缓冲区的办法.
固然利用allocate办法成立的缓冲区并非一次性地分配内存空间,但我们可以从用户地角度将一个缓冲区想象成一个长度为capacity的数组.当缓冲区成立后,和数组一样,缓冲区的大小(capacity值)将无法改变,也无法拜候缓冲区外的数据.以下面的代码成立了一个大小为6的字节缓冲区.
ByteBuffer byteBuffer = ByteBuffer.allocate(6);
关于byteBuffer来说,只能拜候属于这个缓冲区的六个字节的数据,假如超越了这个范围,将抛出一个BufferOverflowException非常,这是一个运行时错误,因为这个错误只能在程序运行时被发现.
既然缓冲区和数组近似,那么缓冲区也应当象数组一样可以标识当前的位置.缓冲区的position办法为我们供应了这个功效.position办法有两种重载情势,它们的定义以下:
public final int position()
public final Buffer position(int newPosition)
第一个重载情势用来获得缓冲区的当前位置.在成立缓冲区后,position的初始值是0,也就是缓冲区第一个元素的位置.当从缓冲区读取一个元素后,position的值加1.我们从这一点可以看出,position办法返回的位置就是当前可以读取的元素的位置.position的取值范围从0到capacity – 1.假如position的值等于capacity,阐明缓冲区当前已经没有数据可读了.
position办法的第二个重载情势可以设置缓冲区的当前位置.参数newPosition的取值范围是0 <= newPosition < capacity.假如newPosition的值超越这个范围,position办法就会抛出一个IllegalArgumentException非常.
在大大都情形下不需求直接掌握缓冲区的位置.缓冲区类供应的用于读写数据的办法可以自动地设置缓冲区的当前位置.在缓冲区类中,get和put办法用于读写缓冲区中的数据.get和put办法的定义以下:
ByteBuffer类的get和put办法:
public abstract byte get()
public abstract ByteBuffer put(byte b)
IntBuffer类的get和put办法:
public abstract int get()
public abstract IntBuffer put(int i)
其他五个缓冲区类中的get和put办法定义和上面的定义近似,只是get办法返回呼应的数据范例,而put办法的参数是呼应的数据范例,并且返回值的范例是呼应的缓冲区类.
每当put办法向缓冲区写入一个数据后,缓冲区的当前位置城市加1.假如缓冲区的当前位置已经等于capacity,调用put办法就会抛出一个java.nio.BufferOverflowException非常.在缓冲区未初赋值的区域将被0填充.利用get办法可以得到缓冲区当前位置的数据,并使缓冲区的当前位置加1.和put办法一样,在缓冲区当前位置等于capacity时利用get办法也会抛出java.nio.BufferOverflowException非常.缓冲区的初始状况如图1所示.
图1 缓冲区的初始状况
以上是“Java网络编程从入门到精通(34)[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |