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

java.nio.ByteBuffer的filp方法

 
阅读更多

在看nio的一个示例程序的时候看到ByteBuffer的filp方法,没想明白它是做什么用的。jdk的comment写到:

Flips this buffer. The limit is set to the current position and thenthe position is set to zero. If the mark is defined then it isdiscarded.

还是没明白。。。

从他的代码来看非常的简单,就是:

limit = position;

position = 0;

mark = -1;

理解这个三句话首先要明白limit, position和mark这三个变量的含义。position指的是buffer当前指针的位置,所有的读写操作都是从position开始的。limit是指向第一个不应该被读/写的位置。而mark是指buffer被reset时position应该回到的位置。所以从这里就可以看出,flip的做的事情其实是将position指到最头上,将limit设置为当前位置,并且将mark清除。

通常如果在写buffer结束,准备要开始从里面读的时候,就要调用这个flip方法先。

分享到:
评论

相关推荐

    java NIO.zip

    Java NIO提供了诸如ByteBuffer、CharBuffer、IntBuffer等类型,对应于不同的数据类型。缓冲区具有读写位置,可以通过flip()、clear()和rewind()等方法来管理缓冲区的状态,从而高效地进行数据读写。 3. **选择器...

    Java NIO学习笔记——ByteBuffer用法

    在阅读或实现`byteBufferTest.java`时,注意观察如何利用ByteBuffer的特性进行高效的数据传输,例如与FileChannel配合读写文件,或者在网络编程中与SocketChannel交互。同时,理解源码可以帮助深入理解Java NIO的...

    java.nio API详解

    1. `java.nio`:这个包定义了Buffer及其子类,例如ByteBuffer,CharBuffer等。Buffer是NIO的核心组件,它是一个可以存储特定类型数据(如字节、字符、整数等)的线性容器。每个Buffer有capacity(容量)、limit...

    java NIO详细教程

    ### Java NIO 详细教程知识点解析 #### 一、Java NIO 概述 Java NIO(New IO)是Java平台提供的一种新的IO操作模式,它首次出现在Java 1.4版本中,并在后续版本中不断完善。Java NIO 的设计目的是为了克服传统Java ...

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

    本类,是专门为了处理大文件,按行读取开发的类。 采用读文件的缓存 fbb 1024*5 行缓存 bb 256 字节 设计思想: 每次通过nio读取... fbb.flip(); return fbb.limit(); } } 把 fbb.position() 改成 fbb.limit()

    使用Java NIO编写高性能的服务器.doc

    import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.FileChannel; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels....

    java nio 读文件

    import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; public class FeiNioRead { public static void main(String[] args...

    深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别

    本篇将深入探讨Java NIO(非阻塞I/O)中的ByteBuffer和Mina库自定义的ByteBuffer之间的区别。 Java NIO的ByteBuffer是Java标准库提供的一个核心类,它是通道(Channel)和缓冲区(Buffer)之间数据传输的主要媒介。它...

    nio.rar_Java识别_java nio

    import java.nio.ByteBuffer; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; public class AutoCharsetReader { public static void main...

    Java_NIO_API详解

    1. **`java.nio`**: 定义了各种类型的缓冲区(Buffer),包括`ByteBuffer`、`CharBuffer`等。 2. **`java.nio.channels`**: 提供了一系列通道(Channel)接口及其具体实现,支持文件和网络的I/O操作。 3. **`java.nio....

    nio socket编程java代码示例,客户端发送消息,服务端接收

    import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java....

    java nio

    Java NIO提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、DoubleBuffer、FloatBuffer、IntBuffer和LongBuffer等,它们都继承自抽象类Buffer。缓冲区具有容量、限制和位置等属性,以及诸如put、get和flip等操作...

    niodemo.zip

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O(BIO)模型的新技术。NIO在Java 1.4版本中引入,旨在提高I/O操作的效率,特别是在处理大量并发连接时。与传统的...

    NIO复制文件

    本节我们将深入探讨如何利用NIO进行文件复制,并通过示例代码`NioDemo.java`来理解相关类的使用。 首先,NIO的核心组件包括通道(Channel)、缓冲区(Buffer)和选择器(Selector)。在文件复制过程中,我们主要...

    JavaNIO_API帮助文档详解

    `ByteBuffer`尤其重要,因为它常用于`java.nio.channels`中的通道操作。 - **`java.nio.channels`**:这是NIO的核心,定义了多种通道接口,如文件通道和网络通道,以及用于异步I/O操作的关键类`Selector`。 - **`...

    Android中的ByteBuffer解析

    ByteBuffer是Java NIO(Non-Blocking I/O)的一部分,允许开发者高效地读写大量原始字节,如处理图像、音频或网络数据。本文将深入探讨Android中ByteBuffer的工作原理及其常见应用场景。 一、ByteBuffer的基础概念 ...

    Java NIO原理 图文分析及代码实现

    import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.channels.ServerSocketChannel; import java.nio.channels.SocketChannel; import java....

    java NIO 写文件

    import java.nio.ByteBuffer; import java.nio.channels.FileChannel; public class FileNioWrite { public static void main(String[] args) throws Exception { // 打开一个文件通道 RandomAccessFile file = ...

    复制文件(java)

    另一种方法是利用`java.nio`包的`FileChannel`和`ByteBuffer`,这种方法效率更高,因为它支持大块数据的传输。以下是使用`java.nio`的步骤: 1. 创建`FileChannel`对象,分别从源文件和目标文件的`FileInputStream`...

    JavaNIO.zip_java nio_nio java

    Java NIO提供了多种类型的缓冲区,如ByteBuffer、CharBuffer、IntBuffer等,它们都继承自抽象类Buffer。 3. **选择器(Selectors)**:选择器用于监控多个通道的事件,比如连接就绪、数据可读或可写等。通过一个...

Global site tag (gtag.js) - Google Analytics