`
kalogen
  • 浏览: 880066 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ByteBuffer的flip,clear及rewind区别

    博客分类:
  • Java
阅读更多

近期不少网友表示Android的NIO中有关ByteBuffer的几种常用方法比如clear,rewind和flip到底有哪些区别。下面给大家这三种方法的源码,方便大家记忆。

  public final Buffer clear() {  
    position = 0;     //设置为0
    limit = capacity;    //极限和容量相同
    mark = -1;   //取消标记
    return this;  

public final Buffer rewind() {  
    position = 0;  
    mark = -1;  
    return this;  

public final Buffer flip() {  
     limit = position;   
     position = 0;  
     mark = -1;  
     return this;  
 } 

 从上面对比来看flip和rewind的区别就是flip会制定极限和位置相同,所以我们写数据时不多不少正好,而clear则清空缓冲区。

分享到:
评论
1 楼 zhang_sun 2013-11-30  
rewind方法的limit又是多少呢?等于capacity?

相关推荐

    Android中的ByteBuffer解析

    3. **flip()**:在写入数据后,调用`flip()`会将位置设为0,限制设为当前位置,使得缓冲区进入读取模式。 4. **clear()**:重置位置为0,但不改变限制,常用于清空缓冲区以便重新写入。 5. **rewind()**:将位置设...

    Java NIO学习笔记——ByteBuffer用法

    - `rewind()`:回溯缓冲区,position设置为0,但不改变limit,用于重新读取缓冲区中的数据。 在实际应用中,例如在`byteBufferTest.java`中,可能包含以下步骤: 1. 创建ByteBuffer实例,分配一定的容量。 2. 使用...

    Android开发问题集锦第一期.pdf

    2. **ByteBuffer的flip, clear及rewind的区别** - `clear()`方法将position设为0,limit设为capacity,清除缓冲区的标记。 - `rewind()`方法也将position设为0,但不清除标记,保持原有状态。 - `flip()`方法则将...

    Android开发问题集锦第一期[归纳].pdf

    问题二:ByteBuffer的flip, clear及rewind区别 这三个方法都是用于管理Buffer的状态,以便有效地读写数据: - `clear()`方法将position重置为0,limit设置为capacity,表示缓冲区已清空,准备接受新的数据。 - `...

    Android开发问题集锦第一期

    #### 二、ByteBuffer的flip, clear及rewind的区别 **概念解释**: 在Android中,`ByteBuffer`是NIO (New I/O) 包中处理字节数据的主要工具之一,它提供了一种高效的方式来读写字节序列。`ByteBuffer`中有几个重要的...

    java.nio API详解

    Buffer的API还包括clear、flip、rewind等方法,用于在读写模式之间切换和管理缓冲区状态。 2. `java.nio.channels`:这个包包含一系列Channel接口和它们的实现,如FileChannel、SocketChannel等。Channel代表了一个...

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

    不论是直接还是非直接缓冲区,都提供了诸如`put()`、`get()`、`flip()`、`clear()`、`rewind()`和`limit()`等通用方法,用于数据的存取、位置的管理以及缓冲区状态的控制。例如,`put()`用于写入数据,`get()`用于...

    java读取大文件大全

    - 通过`rewind`方法重置`ByteBuffer`的指针位置,以便于读取数据。 - 将`ByteBuffer`中的数据转换为字符串,逐行处理。 - 对于每一行数据,调用`writeFileByLine`方法进行处理。 3. **逐行写入文件** 这部分...

    Java NIO入门的源码

    1. **Buffer类**:深入理解ByteBuffer、CharBuffer、IntBuffer等不同类型的缓冲区,了解它们的基本操作,如allocate、put、get、flip、clear和rewind等。 2. **Channel类**:研究FileChannel、SocketChannel和...

    倾城服务器源码解读(一)

    《倾城服务器源码解读(一)》这篇文章主要聚焦于解析服务器源码,尤其是与ByteBuffer相关的部分。ByteBuffer作为Java NIO(非阻塞I/O)的一部分,是处理内存缓冲区的关键类,对于高性能网络编程至关重要。在本篇...

    JAVA NIO 按行读取大文件支持 GB级别-修正版

    本类,是专门为了处理大文件,按行读取开发... fbb.rewind(); fbb.clear(); if(this.fc.read(fbb)==-1){ EOF=true; return 0;}else{ fbb.flip(); return fbb.limit(); } } 把 fbb.position() 改成 fbb.limit()

    java NIO原理和使用

    ByteBuffer buffer = ByteBuffer.allocate(1024); // 分配缓冲区 fileChannel.read(buffer); // 从通道读取数据到缓冲区 buffer.flip(); // 翻转缓冲区,准备读取 // 处理数据... buffer.rewind(); // 重置缓冲区...

    JavaNIO.pdf

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

    Java Nio ibm技术文档

    - **操作**:缓冲区的主要操作包括put(写入)、get(读取)、flip、rewind、clear等。 ##### 3.2 通道(Channel) - **种类**:包括FileChannel、SocketChannel等,每种通道都针对不同的场景设计。 - **功能**:通道...

    ByteBufferTest.rar_Java编程_Java_

    `ByteBuffer`的主要方法包括`put`、`get`、`flip`、`clear`、`rewind`等。`put`和`get`分别用于写入和读取数据,`flip`用于切换读写模式,`clear`和`rewind`则用于重置缓冲区状态,以便再次使用。在进行网络通信、...

    javaNIO学习笔记

    - **clear()**:清除整个 Buffer,position 被设置为 0,可以重新写入数据,原有数据未删除。 - **compact()**:清除 Buffer 已读数据,未读取数据移动到 position = 0 处,position 值为未读取数据长度 + 1,写入时...

    jdk 7 源码。含sun包下所有源码

    缓冲区可以进行读写操作,并支持flip、clear、rewind等方法,方便在缓冲区满或空时进行切换。 同时,`Selector`在多路复用I/O中扮演着关键角色。通过注册通道到选择器,开发者可以监听多个通道的事件,如连接请求、...

Global site tag (gtag.js) - Google Analytics