Java NIO指的是new IO ,相对OIO,也称non-blocking IO,对应四种基本IO类型中的IO多路复用,主要有有三大核心组件,Channel(管道),Buffer(缓冲区),selector(选择器)

基本操作流程

allcocate创建实例对象--》put写入数据--》flip切换到读取模式--》get读取数据--》clear切回写入模式,

如下注释:

package com.example.demo;

import java.nio.IntBuffer;

/**
* Created by Administrator on 2019/9/22.
*/
public class NioTest {
static IntBuffer intBuffer=null;
public static void main(String[] args) {
intBuffer=IntBuffer.allocate(20);//默认为写入模式
print();//创建缓冲区p:l:c 0:20:20 p为position l为limit c为capacity
put();//插入5个数
print();//p:l:c 5:20:20 写入模式下写入数据只是改变postition的值
get(2);//输出两个0
print();//p:l:c 7:20:20 没有切换模式的情况下,get也变为在末尾添加两个0 flip();//p:l:c 0:7:20 翻转,切换为读取模式
get(4); print();//p:l:c 4:7:20
get(2);
print();//p:l:c 6:7:20
// intBuffer.rewind() //倒带重读 p:l:c 0:7:20
clear();//p:l:c 0:20:20 切回写入模式,并清空
// compact();//p:l:c 1:20:20 切回写入模式,保留未读取的数据
print();
      }
public static void put(){
for (int i = 0; i < 5; i++) {
intBuffer.put(i);
}
System.out.println("putting data");
} public static void print(){
System.out.println("position=="+intBuffer.position());
System.out.println("limit=="+intBuffer.limit());
System.out.println("capacity=="+intBuffer.capacity());
}
public static void flip(){
intBuffer.flip();
System.out.println("flipping");
}
public static void clear(){
intBuffer.clear();
System.out.println("clearing the buffer");
}
public static void compact(){
intBuffer.compact();
System.out.println("compacting the buffer");
}
public static void get(int n){
System.out.println("starting to read");
for (int i = 0; i < n; i++) {
System.out.println("read data=="+intBuffer.get());
}
System.out.println("ending to read");
}
}

输出

position==0
limit==20
capacity==20
putting data
position==5
limit==20
capacity==20
starting to read
read data==0
read data==0
ending to read
position==7
limit==20
capacity==20
flipping
starting to read
read data==0
read data==1
read data==2
read data==3
ending to read
position==4
limit==7
capacity==20
starting to read
read data==4
read data==0
ending to read
position==6
limit==7
capacity==20
clearing the buffer
position==0
limit==20
capacity==20

NIO组件之buffer的更多相关文章

  1. Java NIO 三大组件之 Buffer

    NIO大三组件 之Buffer 一.什么是Buffer Buffer是用于特定原始类型的数据的容器. 它的实质就是一组数组,用于存储不同类型的数据. 二.缓冲区的类型 缓冲区类型除了Boolean值类 ...

  2. Java NIO Channel和Buffer

    Java NIO Channel和Buffer @author ixenos Channel和Buffer的关系 1.NIO速度的提高来自于所使用的结构更接近于OS执行I/O的方式:通道和缓冲器: 2 ...

  3. Java NIO中的Buffer 详解

    Java NIO中的Buffer用于和NIO通道进行交互.如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的.缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存.这块内存被包装成NIO ...

  4. NIO之缓冲区(Buffer)的数据存取

    缓冲区(Buffer) 一个用于特定基本数据类行的容器.有java.nio包定义的,所有缓冲区都是抽象类Buffer的子类. Java NIO中的Buffer主要用于与NIO通道进行交互,数据是从通道 ...

  5. NIO(一):Buffer缓冲区

    一.NIO与IO: IO:  一般泛指进行input/output操作(读写操作),Java IO其核心是字符流(inputstream/outputstream)和字节流(reader/writer ...

  6. nio之缓冲区(Buffer)理解

    一.缓冲区简介 Nio中的 Buffer 是用于存储特定基础类型的一个容器.为了能熟练的使用 Nio中的各种 Buffer , 我们需要理解 Buffer 中的 三个重要 的属性. 1. capaci ...

  7. Java I/O(3):NIO中的Buffer

    您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来- 之前在调用Channel的代码中,使用了一个名叫ByteBuffer类,它是Buffer的子类.这个叫Buffer的类是专门用来解决高速设备与低 ...

  8. NIO 组件Buffer

    重要属性 属性 描述 Capacity 容量, 即可以容纳的最大数据量; 在缓冲区创建时被设定并且不能改变 Limit 表示缓冲区的当前终点, 不能对缓冲区超过极限的位置进行读写操作, 且极限是可以修 ...

  9. NIO三大组件之Buffer

    什么是Buffer Buffer(这里并不是特指Buffer类)是一个存储数据的容器,与数组类似(其实底层依旧是用数组的结构来存储数据),但不同的是,Buffer对象提供了一组更有效的方法去进行写入和 ...

随机推荐

  1. 搭建CocoaPods远程私有库

    1.创建自己的远程私有索引库,用来存放私有框架的.podspec文件,并将其添加到本地索引 我用的仓库是码云(https://gitee.com),用自己的账号新建一个私有仓库,我命名为Private ...

  2. 2019-11-29-VisualStudio-解决方案筛选器-slnf-文件

    title author date CreateTime categories VisualStudio 解决方案筛选器 slnf 文件 lindexi 2019-11-29 08:41:13 +08 ...

  3. lua基础(2)

    错误处理: local function add(a,b) assert(type(a) == "number", "a 不是一个数字") assert(typ ...

  4. 数据库备份及SQL脚本导入

    数据库备份及SQL脚本导入 数据导出 su - oracle exp 数据库用户名/数据库密码@ORCL file=20190905.dmp full=y SQL脚本导入 首先导入前查看Oracle用 ...

  5. 查个远程桌面是否开启 debug版360报毒 release 不报毒

    360 真tm流氓一个

  6. nll_loss

    ''' torch.nn torch.nn.functional (F)CrossEntropyLoss cross_entropy LogSoftmax log_softmax NLLLoss nl ...

  7. 测试工具Telerik Test Studio发布R2 2019|支持VS 2019

    Telerik Test Studio是一个用于功能性Web.桌面和移动测试的直观测试自动化工具,它能轻松地实现自动化测试.同时会为GUI.性能.加载和API测试提供完整的自动化测试解决方案. |更多 ...

  8. ZROI 19.08.10模拟赛

    传送门 写在前面:为了保护正睿题目版权,这里不放题面,只写题解. A \(20pts:\) 枚举操作序列然后暴力跑,复杂度\(O(6^n)\). \([50,80]pts:\) 枚举改成dfs,每层操 ...

  9. Nginx之概念和简介

    Nginx是什么? 代理服务器,处于客户端和服务器端之间的一台服务器,不负责处理请求. 主要作用是什么? 1.负载均衡: 高并发场景下,Nginx代理服务器按一定规则将请求分发,从而使服务器能有条不紊 ...

  10. Quantitative Strategies for Achieving Alpha (三)

    chapter 4: Profitability Profitability measures we tested include return on invested capital, return ...