JAVA语言之Java NIO之Buffer
小标 2019-03-04 来源 : 阅读 567 评论 0

摘要:本文主要向大家介绍了JAVA语言之Java NIO之Buffer,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之Java NIO之Buffer,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

JAVA语言之Java NIO之Buffer

Buffer是固定大小的数据的容器,其作用是一个存储器,或者分段运输区,在这里数据可被存储并在之后用于检索。缓冲区的工作与通道紧密联系,待传递出去的数据被置于一个缓冲区,被传送到通道;待传回的缓冲区的传输,一个通道将数据放置在所提供的缓冲区中。这种在协同对象之间进行的缓冲区数据传递是高效数据处理的关键。


Buffer类的层次图
下图是Buffer类的层次图。在顶部是通用Buffer类,Buffer定义所有缓冲区类型共有的操作,无论是它们所包含的数据类型还是可能具有的特定行为:


Buffer的属性
缓冲区是包在一个对象内的基本数据元素数组。Buffer类相比一个简单数组的优点是它将关于数据的数据内容和信息包含在一个单一的对象中,Buffer类以及它专有的子类定义了一个用于处理数据缓冲区的API。所有的缓冲区都具有四个属性来提供关于其所包含的数据元素的信息:


属 性 作 用
capacity    容量,指缓冲区能够容纳的数据元素的最大数量,这一容量在缓冲区创建时被设定,并且永远不能被改变
limit   上界,指缓冲区的第一个不能被读或写的元素,或者说是,缓冲区中现存元素的计数
position    位置,指下一个要被读或写的元素的索引,位置会自动由相应的get()和put()函数更新
mark    标记,指一个备忘位置,调用mark()来设定mark=position,调用reset()来设定postion=mark,标记未设定前是未定义的
下面简单介绍几个常用方法调用后,属性的变化。开辟一个起始容量为10的缓冲区:



put() 方法


flip() 方法,将Buffer从写模式切换到读模式


image.png


rewind()方法,将position设回0,limit保持不变,用于重读Buffer中的所有数据


Buffer读写模式下属性的变化


Buffer的使用
最后以一段代码,简单介绍以下Buffer的使用


public class TestMain
{
/**


待显示的字符串
*/
private static String[] strs = 
{
"Hello World"
};


/**



标识strs的下标索引
*/
private static int index = 0;


/**


向Buffer内放置数据
*/
private static boolean fillBuffer(CharBuffer buffer)
{
if (index >= strs.length)
return false;


String str = strs[index++];
for (int i = 0; i < str.length(); i++)
{
buffer.put(str.charAt(i));
}


return true;
}


/**


从Buffer内把数据拿出来
*/
private static void drainBuffer(CharBuffer buffer)
{
while (buffer.hasRemaining())
{
System.out.print(buffer.get());
}
System.out.println("");
}


public static void main(String[] args)
{
CharBuffer cb = CharBuffer.allocate(100);
while (fillBuffer(cb))
{
cb.flip();
drainBuffer(cb);
cb.clear();
}
}
}


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程