1.remaining();返回当前位置与limit之间得元素数。

int[] intArray={1,2,3,4};
IntBuffer intBuffer=IntBuffer.wrap(intArray);
intBuffer.limit(3);
intBuffer.position(1);
System.out.println(intBuffer.remaining());

2.isDirect() 判断是否为直接缓冲区。

ByteBuffer byteBuffer=ByteBuffer.allocateDirect(100);
System.out.println(byteBuffer.isDirect());

3.clear()还原缓冲区得状态,是状态,不是数据;比如将position=0.market丢失掉。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
byteBuffer.position(2);
byteBuffer.limit(3);
byteBuffer.mark(); byteBuffer.clear();
System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
try {
byteBuffer.reset();
} catch (Exception e) {
System.out.println("market已经丢失");
}

4.flip() 向缓冲区写入一些数据后,下一步直接读取缓冲区中得数据之前,以改变limit与position得值。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer byteBuffer=ByteBuffer.wrap(byteArray);
byteBuffer.position(2);
byteBuffer.mark(); byteBuffer.flip();
System.out.println("position:"+byteBuffer.position()+";limit:"+byteBuffer.limit());
try {
byteBuffer.reset();
} catch (Exception e) {
System.out.println("market已经丢失");
}

5.hasArray()判断此缓冲区是否具有可访问得底层实现数组。

ByteBuffer byteBuffer=ByteBuffer.allocate(100);
byteBuffer.put((byte) 1);
byteBuffer.put((byte) 2);
System.out.println(byteBuffer.hasArray()); ByteBuffer byteBuffer2=ByteBuffer.allocateDirect(100);
byteBuffer2.put((byte) 1);
byteBuffer2.put((byte) 2);
System.out.println(byteBuffer2.hasArray());

6.hasRemaining() 判断当前位置与限制之间是否有元素。

byte[] byteArray=new byte[]{1,2,3};
ByteBuffer bytebuffer=ByteBuffer.wrap(byteArray);
bytebuffer.limit(3);
bytebuffer.position(2);
System.out.println(bytebuffer.hasRemaining()+";"+bytebuffer.remaining());

7.rewind()  position置为0,标记清除掉,limit不变。

8.clear() position置为0,limit=capacity,market=-1.清除缓冲区得状态。

9.List.toArrat(T[])  转成数组。

ByteBuffer buffer1=ByteBuffer.wrap(new byte[]{'a','b','c'});
ByteBuffer buffer2=ByteBuffer.wrap(new byte[]{'x','y','z'});
ByteBuffer buffer3=ByteBuffer.wrap(new byte[]{'1','2','3'});
List<ByteBuffer> list=new ArrayList<ByteBuffer>();
list.add(buffer1);
list.add(buffer2);
list.add(buffer3); ByteBuffer[] byteBufferArray=new ByteBuffer[list.size()];
list.toArray(byteBufferArray);
System.out.println(byteBufferArray.length);
for(int i=0;i<byteBufferArray.length;i++){
ByteBuffer eachByteBuffer=byteBufferArray[i];
while (eachByteBuffer.hasRemaining()) {
System.out.print((char) eachByteBuffer.get());
}
System.out.println();
}

NIO基础方法一的更多相关文章

  1. 从零开始学 Web 之 ES6(三)ES6基础语法一

    大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:ht ...

  2. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  3. JBOSS通过Apache负载均衡方法一:使用mod_jk

    JBOSS通过Apache负载均衡方法一:使用mod_jk   本文第一.二节分别对Linux环境下前端使用Apache以及windows环境下前端使用IIS通过AJP协议和后端的JBOSS通信实现负 ...

  4. centos6.5下oracle11g开机自动启动方法一

    转裁于 方法一 https://blog.csdn.net/wx5040257/article/details/77875690 方法二  https://blog.csdn.net/wx504025 ...

  5. mybatis由浅入深day02_2一对一查询_2.2方法一:resultType

    2 一对一查询 2.1 需求(查询所有订单信息,关联查询创建订单的用户信息) 查询所有订单信息,关联查询创建订单的用户信息 注意:因为一个订单信息只会是一个人下的订单,所以从查询订单信息出发关联查询用 ...

  6. 头像文件上传 方法一:from表单 方法二:ajax

    方法一:from表单 html 设置form表单,内包含头像预览div,内包含上传文件input 设置iframe用来调用函数传参路径 <!--表单提交成功后不跳转处理页面,而是将处理数据返回给 ...

  7. vue抽取公共方法———方法一

    方法一:Vue插件 1.概述 作用:满足vue之外的需求,特定场景的需求 比如说,让你在每个单页面组件里,都可以调用某个方法(公共方法),或者共享某个变量等 2.使用方法 [声明插件]- [写插件]- ...

  8. 登录操作(方法一:设置flag标志位)

    登录操作(方法一:设置flag标志位) user_name="star"passwoed='123'passed_authentication=Falsecount=0for i ...

  9. JS数组 二维数组 二维数组的表示 方法一: myarray[ ][ ];方法二:var Myarr = [[0 , 1 , 2 ],[1 , 2 , 3, ]]

    二维数组 一维数组,我们看成一组盒子,每个盒子只能放一个内容. 一维数组的表示: myarray[ ] 二维数组,我们看成一组盒子,不过每个盒子里还可以放多个盒子. 二维数组的表示: myarray[ ...

随机推荐

  1. pip install pyspider失败的解决办法

    td{ width:10000px } 报错 下载pycurl库 地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl 选择对应的python版本 ...

  2. C# HttpClient以multipart/form-data形式 提交文件和其它参数

    调用文件接口,需要一个上传文件和一个Region参数,参考调用实例 public async Task<WebApiResult> UploadFile(UploadFileModel i ...

  3. LAMPSecurity: CTF6 Vulnhub Walkthrough

    镜像下载地址: https://www.vulnhub.com/entry/lampsecurity-ctf6,85/ 主机扫描: ╰─ nmap -p- -sV -oA scan 10.10.202 ...

  4. Client error attempting to change layout margins of a private view

    从 iOS 11 开始,UINavigationBar 使用了自动布局,左右两边的按钮到屏幕之间会有 16 或 20 的边距. 为了避免点击到间距的空白处没有响应,通常做法是:定义一个 UINavig ...

  5. 计算几何 val.2

    目录 计算几何 val.2 几何单位结构体板子 旋转卡壳 基础概念 求法 模板 半平面交 前置芝士:线段交 S&I算法 模板 最小圆覆盖 随机增量法 时间复杂度 模板 后记 计算几何 val. ...

  6. 【5000 Stars 福利】微信接口动态 WebApi 使用说明

    前言 作为中国 C# 开源项目中 Watch/Star/Fork 最高的项目之一,Senparc.Weixin SDK  凝聚了盛派微信团队持续7年的付出,和大量开发者的无私贡献,以及数万开发者的使用 ...

  7. .NET开源类库Nini手册(INI、XML、注册表的配置应用)-中文翻译

    目录 1.简介 1.1什么是应用程序配置数据? 1.2问题 1.3介绍Nini 2.入门 2.1一个简单的例子 2.2默认值 2.3设置.保存和删除键 2.4添加和删除配置 2.5键值扩展 3.高级主 ...

  8. GO汇总

    1.基础 GO语言介绍以及开发环境配置 Go-包 Go-数据类型以及变量,常量 Go-获取变量数据类型 GO-数组与切片 GO-切片拷贝以及赋值 Go-函数 Go-闭包 GO-逻辑判断(if,else ...

  9. Flask 教程 第十章:邮件支持

    本文翻译自The Flask Mega-Tutorial Part X: Email Support 这是Flask Mega-Tutorial系列的第十部分,在其中我将告诉你,应用如何向你的用户发送 ...

  10. Python 3.7的安装过程

    百度云Pyhton3.7-32位安装包: 链接:https://pan.baidu.com/s/1P5Egkl2KNt_DjhiFaDzqsg提取码:5171 百度云Pyhton3.7-64位安装包: ...