`

Java NIO Buffer的flip、reset、mark、rewind、clear操作区别联系

阅读更多

标记、位置、限制和容量值遵守以下不变式:

0 <= 标记 <= 位置 <= 限制 <= 容量

 

 

  位置 限制 容量 标记
  position limit capcity mark
mark / / / position
reset position / / /
clear 0 capcity / 丢弃
flip 0 position / /
rewind 0 / / /

 

缓冲区的容量 是它所包含的元素的数量。缓冲区的容量不能为负并且不能更改。

缓冲区的限制 是第一个不应该读取或写入的元素的索引。缓冲区的限制不能为负,并且不能大于其容量。

缓冲区的位置 是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其限制。

 

 

(这部分是转载)

http://book.51cto.com/art/200902/109721.htm

表 5.4:在Buffer上创建不同透视的方法

方法

Capacity

新缓冲区的初始值

Position

Limit

Mark

ByteBuffer duplicate()

capacity

position

limit

mark

ByteBuffer slice()

remaining()

0

remaining()

未定义

ByteBuffer asReadOnlyBuffer()

capacity

position

limit

mark

CharBuffer asCharBuffer()

remaining()/2

0

remaining()/2

未定义

DoubleBuffer asDoubleBuffer()

remaining()/8

0

remaining()/8

未定义

FloatBuffer asFloatBuffer()

remaining()/4

0

remaining()/4

未定义

IntBuffer asIntBuffer()

remaining()/4

0

remaining()/4

未定义

LongBuffer asLongBuffer()

remaining()/8

0

remaining()/8

未定义

ShortBuffer asShortBuffer()

remaining()/2

0

remaining()/2

 

 

 

分享到:
评论

相关推荐

    JavaNIO.pdf

    缓冲区提供了四种基本操作:clear、flip、rewind和reset。 * clear():将缓冲区设置为准备好进行读取或写入操作,将限制设置为容量大小,将位置设置为0。 * flip():将缓冲区设置为准备好进行写入操作,将限制设置...

    Java NIO 主要类和方法(Java NIO中文版 附录C)

    Java NIO(New Input/Output)是Java提供的一种新的输入输出处理机制,它与传统IO基于流的处理方式不同,NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。在Java NIO中,Buffer类是...

    javaNIO学习笔记

    ### Java NIO 学习笔记 #### 一、概述 Java NIO (Non-Blocking IO,也称为 Java New IO),是 Java 对传统 IO 模型的一次重大改进,旨在提高程序处理大量并发连接的能力。NIO 的核心组件包括 Channels、Buffers 和 ...

    Java_NIO_API详解[参照].pdf

    Buffer提供了诸如clear、flip、rewind和mark等方法,用于管理和操作缓冲区中的数据。 2. **通道(Channel)**:通道类似于流,但它是双向的,可以进行读写操作。Java.nio.channels包中定义了多种类型的通道,如...

    Java性能优化之使用NIO提升性能(Buffer和Channel)

    Java性能优化中,NIO(New Input/Output)框架是一个重要的技术,它的引入极大地提升了Java在处理I/O操作时的效率。NIO的核心组件包括Buffer(缓冲区)和Channel(通道),它们共同解决了传统I/O模型中的一些性能...

    java NOI 学习

    Java NIO API通过提供基于缓冲区和非阻塞IO操作的新模型,极大地提高了Java程序处理大量并发连接的能力。相比于传统的阻塞式IO模型,NIO在设计上更加灵活,也更适合现代网络环境的需求。通过深入理解`Buffer`、`...

    Java中的缓冲区(直接缓冲区、非直接缓冲区等).docx

    - `reset()`: 将`position`重置为`mark`位置。 #### 七、使用示例 下面是一个简单的示例,展示了如何使用`ByteBuffer`来读写数据: ```java import java.nio.ByteBuffer; public class BufferExample { public ...

    NIO初体验 ╥﹏╥

    Buffer的操作主要包括:`put()`用于写入数据,`get()`用于读取数据,`clear()`和`flip()`用于重新配置缓冲区状态,`rewind()`将位置设为0,`hasRemaining()`检查是否有剩余数据,以及`mark()`和`reset()`进行标记和...

Global site tag (gtag.js) - Google Analytics