`

nio _Buffer中的flip()

 
阅读更多
http://blog.sina.com.cn/s/blog_4bc179a80100xiy5.html

此方法位于:java.nio.Buffer Buffer是一个用于特定基本类型数据的容器。
缓冲区是特定基本类型元素的线性有限序列。除内容外,缓冲区的基本属性还包括容量(capacity)、限制(limit)和位置(position):
缓冲区的capacity是它所包含的元素的数量。缓冲区的capacity不能为负并且不能更改。
缓冲区的limit 是第一个不应该读取或写入的元素的索引。缓冲区的limit不能为负,并且不能大于其capacity。
缓冲区的position是下一个要读取或写入的元素的索引。缓冲区的位置不能为负,并且不能大于其limit。对于每个非 boolean 基本类型,此类都有一个子类与之对应。

在使用缓冲区进行输入输出数据之前,必须确定缓冲区的position,limit都已经设置了正确的值。

如果现在想用这个缓冲区进行信道的写操作,由于write()方法将从position指示的位置开始读取数据,在limit指示的位置停止,因此在进行写操作前,先要将limit的值设为position的当前值,再将position的值设为0。这个操作可以通过这个flip()方法实现。
flip()使缓冲区为一系列新的通道写入或相对获取 操作做好准备:它将限制设置为当前位置,然后将位置设置为0,即上边的要求(红色字体表示)。

所以,上边的操作步骤为:buffer.flip();
out.write(buffer);
分享到:
评论

相关推荐

    nio_javanio_NIO_

    本文将深入探讨Java NIO的核心概念、主要组件以及如何在实际应用中使用。 1. **通道(Channel)与缓冲区(Buffer)** - **通道(Channel)**:在NIO中,数据的读写都是通过通道进行的。通道类似于流,但具有双向性,...

    JavaNIO.zip_java nio_nio java

    buffer.flip(); // 准备写入 outputChannel.write(buffer); ``` 3. **使用选择器**:注册通道到选择器,监听感兴趣的事件。 ```java Selector selector = Selector.open(); SocketChannel channel = SocketChannel....

    nio.rar_Java socketA_java nio_java socket a

    在Java Socket API中,传统的阻塞I/O基于流(Stream-based)模型,而NIO基于通道(Channel-based)和缓冲区(Buffer-based)模型。以下是Java NIO在Socket通信中的关键知识点: 1. **通道(Channel)**:通道类似于...

    JavaNIO_API帮助文档详解

    - **通道(Channel)**:通道是NIO中的关键概念,它连接`Buffer`与外部实体,如文件或网络套接字,实现数据的读写。通道可以是阻塞的或非阻塞的,后者允许在没有数据可用时不会阻塞程序执行,而是立即返回,这在高并发...

    Java_NIO_API详解

    Channels是NIO中的另一个核心概念,它们提供了一种将数据从网络或文件传输到Buffer的方式,反之亦然。`java.nio.channels`包中定义了几种重要的通道接口及其实现,如`FileChannel`、`SocketChannel`等。 - **...

    Java_NIO_API详解[参照].pdf

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

    NIO详细介绍channle,buffer,Selector

    **Buffer**在NIO中扮演着数据存储和传输的角色。它是一个可被读写的对象,用于暂存数据,并且提供了多种方法来处理这些数据。Buffer的主要特点包括: 1. **动态大小**:Buffer的容量是固定的,但其存储的数据大小是...

    动态演示nio中的buffer相关操作.zip

    这个压缩包“动态演示nio中的buffer相关操作.zip”显然是为了帮助用户直观地理解NIO Buffer的工作机制,通过动态演示来展示Buffer如何存储、读取和传输数据。 在Java NIO中,Buffer是一个特定类型的数组,用于临时...

    Java NIO Buffer过程详解

    Java NIO Buffer 是 Java NIO 中的一种重要组件,负责数据的存储和传输。缓冲区是数组,用于存储不同数据类型的数据。在与 NIO 通道交互时,Java NIO Buffer plays a crucial role. 基本缓冲区用法: 1. 写入数据...

    nio.rar_Java识别_java nio

    buffer.flip(); // 准备解码 // 自定义字符集识别逻辑 for (String charsetName : getPossibleCharsets()) { Charset charset = Charset.forName(charsetName); CharsetDecoder decoder = charset.newDecoder...

    详细了解JAVA NIO之Buffer(缓冲区)

    JAVA NIO之Buffer(缓冲区)是Java NIO中一个重要的概念,它提供了一种高效的数据处理方式。缓冲区是一个可以写入数据然后从中读取数据的内存块,它被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块...

    The_Study_about_Java.nio.rar_java nio

    1. **通道(Channels)**:Java NIO中的通道类似于流,但它们是双向的,可以读写数据。常见的通道类有FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel。 2. **缓冲区(Buffers)**:缓冲区是...

    java NIO详细教程

    - **缓冲区(Buffer)**:缓冲区是Java NIO中数据读写的基础单元。根据数据类型的不同,Java NIO 提供了多种缓冲区: - **ByteBuffer**:用于基本字节数据的缓冲。 - **CharBuffer**:用于字符数据的缓冲。 - **...

    java nio 读文件

    在本篇文章中,我们将深入探讨Java NIO如何读取文件。 一、NIO的基本概念 1. 缓冲区(Buffer):NIO的核心组件,用于存储数据。Java提供了多种Buffer类,如ByteBuffer、CharBuffer、IntBuffer等,分别对应不同数据...

    JDK_7_NIO2

    以上代码中,`client.read(buffer)` 是一个异步操作,它将读取的数据放入 `ByteBuffer` 中,然后通过 `flip()` 方法准备数据以便读取。 #### 结论 通过本文的介绍,我们可以看到 NIO.2 引入的异步通道 API 极大地...

    java NIO 写文件

    在这个主题中,我们将深入探讨Java NIO如何用于写文件,特别是在处理大数据文件时如何提高性能。 首先,理解Java NIO的基本概念非常重要。NIO中的“N”代表“非阻塞”,这意味着在进行I/O操作时,程序可以继续执行...

    JavaNio视频下载_百度云盘资源

    缓冲区实际上是一块可以读写的内存空间,这块内存空间被封装成NIO Buffer对象,它支持数据的读写操作,并且可以通过flip()方法在读模式和写模式之间切换。 - **Direct Buffer**:直接缓冲区是在本地内存而非Java堆...

    Java IO_NIO

    NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。通道是数据传输的途径,如文件通道、网络通道等;缓冲区是存储数据的地方,提供了更有效率的数据读写方式;选择器允许单线程管理多个通道...

    浅谈java中nio的使用方式

    在IO中,数据通常是直接从流到流的,而在NIO中,数据首先被读入Buffer,然后从Buffer中取出。Buffer支持多种数据类型,如ByteBuffer、CharBuffer、IntBuffer等。Buffer有固定大小,可以预先分配,提高效率。 NIO的...

Global site tag (gtag.js) - Google Analytics