buffer是固定数量的数据的容器,可以被填充和读取。
一个 buffer 主要由 position,limit,capacity 3个属性
capacity : buffer最大容量,创建时设定,不可修改
position:当前操作(读写)位置
limit: 第一个不能被读写的元素的位置,即最大可用空间.如果position=limit,继续往buffer
中存放数据,会抛越界异常
mark:标记当前位置,可以后续reset返回到当前position
几个属性关系:
0<=mark<=position<=limit<=capacity
clear方法:为写入数据做准备
public final Buffer clear() {
position = 0;
limit = capacity;
mark = -1;
return this;
}
flip方法,为读取该buffer做准备
public final Buffer flip() {
limit = position;//position是前面已填充数据的位置
position = 0;
mark = -1;
return this;
}
rewind方法,从新设置position为0,后续可进行重复操作
public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}
compact(): 将未读取的数据拷贝到 buffer 的头部位。即将当前position数据复制到0出,position+n
出复制到n处
//allocate创建一个buffer,指定capacity,默认limit=capacity,position=0
CharBuffer buffer = CharBuffer.allocate(10);
//存入元素
buffer.put('A').put('B');
//从新设定buffer的limit为6,则该buffer最多能存储6个元素
buffer.limit(6);
buffer.put('C').put('D').put('E');
//准备读取该buffer中元素
buffer.flip();
int count = buffer.limit();//5
for(int i=0;i<count;i++){
System.out.println(buffer.get());
}
//rewind该buffer,进行第二次读取操作
buffer.rewind();
for(int i=0;i<count;i++){
System.out.println(buffer.get());
}
buffer.rewind();
while(buffer.hasRemaining()/*return position<limit*/){
System.out.println(buffer.get());
}
分享到:
相关推荐
Java NIO Buffer 过程详解 Java NIO Buffer 是 Java NIO 中的一种重要组件,负责数据的存储和传输。缓冲区是数组,用于存储不同数据类型的数据。在与 NIO 通道交互时,Java NIO Buffer plays a crucial role. 基本...
Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六) Selector Java NIO系列教程(七) FileChannel Java NIO系列教程(八) ...
12-Java NIO-Buffer-概述.mp4 13-Java NIO-Buffer-基本使用.mp4 14-Java NIO-Buffer-三个属性和类型.mp4 17-Java NIO-Buffer-缓冲区分片.mp4 18-Java NIO-Buffer-只读缓冲区.mp4 19-Java NIO-Buffer-直接缓冲区.mp4 ...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于替代标准I/O(BIO)模型的一种新机制。NIO在Java 1.4版本引入,提供了更高效的数据处理和通道通信方式,特别适用于高并发、大数据...
标准的IO基于字节流和字符流进行操作的,而NIO是基于通道(Channel)和缓冲区(Buffer)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。 Java NIO: Non-blocking IO(非阻塞IO) Java NIO...
### Java NIO 处理超大数据文件的知识点详解 #### 一、Java NIO简介 Java NIO(New IO)是Java平台上的新输入/输出流API,它提供了与传统IO(即Java IO)不同的数据处理方式。NIO在Java 1.4版本引入,并在后续版本...
Java NIO(New Input/Output)是Java标准库提供的一种I/O模型,它与传统的 Blocking I/O(IO)相比,提供了更加高效的数据传输方式。在Java NIO中,"新"主要体现在非阻塞和多路复用这两个特性上,这使得NIO更适合于...
3. **Buffer(缓冲区)**:在NIO中,数据读写都是通过缓冲区进行的。缓冲区是一个可以容纳特定类型数据(如字节、字符、整数等)的容器,它提供了对数据的高效访问和管理。 4. **FileChannel**:用于文件的读写,...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在传统的Java IO模型中,读写操作是阻塞的,即当调用read或write方法时,线程会等待数据准备好或...
Java NIO(New IO)是Java 1.4版本引入的一个新模块,它提供了一种不同于标准Java IO API的处理I/O操作的方式。NIO的主要特点是面向缓冲区,非阻塞I/O,以及选择器,这些特性使得NIO在处理大量并发连接时表现出更高...
缓冲区类型包括ByteBuffer、CharBuffer、IntBuffer、DoubleBuffer等,它们都继承自`java.nio.Buffer`。 3. **选择器(Selector)**:用于监听多个通道的事件(如连接就绪、数据到达等),当某个通道准备好进行读写...
Java NIO的核心组件包括Channel(通道)、Buffer(缓冲区)和Selector(选择器)。 - **Channel**:通道用于连接源和目的地,支持数据的读写操作。与传统的流不同,通道支持双向通信,并且可以通过非阻塞的方式进行...
Java NIO定义了多个Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,每个Buffer都有容量、位置、限制等属性,可以进行读写操作。 3. **选择器(Selectors)**:选择器用于监控多个通道的状态,当某个通道准备就绪...
根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...