1.前言。
如题,limit其实就是可以读取的字节长度的意思,flip是清空的意思,mark是标记的意思 。
2.例子.
例子代码:
String str = "helloWorld";
ByteBuffer buff = ByteBuffer.wrap(str.getBytes());
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
//读取两个字节
buff.get();
buff.get();
System.out.println("position:"+ buff.get(buff.position())+"\t limit:"+buff.limit());
buff.mark();
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
buff.flip();
System.out.println("position:"+buff.position()+"\t limit:"+buff.limit());
运行结果:
<pre class="java" name="code">输出结果:
position:0 limit:10
position:2 limit:10
position:2 limit:10
position:0 limit:2
</pre>
3.总结.
(1)limit是在mark后可以读取的长度,当调用了flip操作的时候,limit=position-0,position和mark操作的记录都归零。
(2)调用flip前需要先mark,两者是成对出现。
(3)用filp,mark没什么意义,直接操作position,自己判断是否可读比较方便。
本文例子部分参照:http://blog.csdn.net/sunzhenhua0608/article/details/31778519这位叫“忧国一小民”的博主,对于博主的无私奉献,笔者深表感谢。
分享到:
相关推荐
本教程重点讲解了`ByteBuffer`的几个关键属性:mark、position、limit和capacity,以及重要的操作方法如flip。这些概念和方法对于理解和使用Java NIO进行内存数据操作至关重要。 首先,`ByteBuffer`是`Buffer`接口...
总的来说,Mina ByteBuffer是对Java NIO ByteBuffer的扩展和优化,它更加关注网络通信的性能和效率,提供了更适合网络服务开发的特性和功能。了解它们之间的差异对于高效利用Mina框架进行网络编程至关重要。通过阅读...
《深入解析dena-bytebuffer:JavaScript中的高效二进制数据处理》 在JavaScript的世界里,处理二进制数据是一项常见的任务,特别是在网络通信、游戏开发、图像处理等领域。`dena-bytebuffer`库就是为了解决这个问题...
2. **网络通信**:在Android网络编程中,ByteBuffer用于处理Socket通信中的字节流。 3. **图像处理**:在Android图形处理中,如OpenGL ES,ByteBuffer用于传递像素数据。 六、性能优化 1. **选择适当的缓冲区类型...
ios-byteBuffer [![CI状态]( Lee / ios-byteBuffer.svg?style = flat)]( Lee / ios-byteBuffer ) 用法 #分配 ByteBuffer *buffer = [ByteBuffer initWithOrder: ByteOrderLittleEndian]; #输入数据 - ( ...
├─(5) 第1章_05_bytebuffer-基本使用.mp4 ├─(6) 第1章_06_bytebuffer-内部结构.mp4 ├─(7) 第1章_07_bytebuffer-方法演示1.mp4 ├─(8) 第1章_08_bytebuffer-方法演示2.mp4 ├─(9) 第1章_09_bytebuffer-方法...
标题中的“ByteBuffer-scanner-Memor-Hex”很可能是一个关于Java编程中的内存处理和数据解析的项目或库。ByteBuffer是Java标准库中的一个关键类,主要用于处理二进制数据,尤其是在网络通信、文件读写以及内存操作等...
在IT行业中,ByteBuffer是一个非常重要的概念,特别是在网络通信和数据处理领域。ByteBuffer是Java平台提供的一种高效的数据操作接口,它允许我们以字节为单位进行读写操作,这对于处理二进制数据尤其有用。在...
本文主要关注的是Java NIO中的ByteBuffer,一个关键的数据容器,用于在通道(Channel)和缓冲区(Buffer)之间传输数据。ByteBuffer的用法是Java NIO学习中的核心内容。 首先,我们了解下ByteBuffer的基本概念。...
使用nio byteBuffer 实现按行读取文件(大文件) 在window/linux/macOS上均测试通过 对于中文乱码也已处理成功 完整注释,可随需求更改 有问题请邮件:mly610865580@126.com
- **JAVA NIO**: 提供了基于通道(Channel)和缓冲区(Buffer)的新的IO处理方式,提高了IO操作的性能和灵活性。 - **NIO的缓冲区**: 用于存储不同数据类型的临时容器,包括ByteBuffer、CharBuffer等。 - **NIO的非...
以上就是关于“protobuf+long+bytebuffer”的知识点介绍,它涉及了protobuf.js库在JavaScript环境中的应用,以及如何处理大整数和二进制数据操作。了解这些内容有助于在JavaScript中高效地实现protobuf数据的序列化...
在Java编程语言中,字节流(Byte Stream)和字符流(Character Stream)是处理输入输出数据的两种基本方式。...在实际开发中,要根据数据的性质和需求灵活选择使用哪种类型的流,以确保数据的正确传输和处理。
在Java编程语言中,IO(Input/Output)流是一组用于处理输入输出操作的类和接口,它们构成了Java标准库的基础部分。IO流允许程序与外部设备如键盘、显示器、磁盘、网络等进行数据传输。这篇博文将深入探讨IO流的概念...
在IT领域,ByteBuffer通常被用作一个高效的缓冲区,它可以存储和操作字节序列,尤其在处理网络通信时,能有效地组织和传输数据。易语言作为中国本土的一种编程语言,以其独特的“中文编程”特性,降低了编程的门槛,...
Java NIO(New Input/Output)是Java提供的一种新的输入输出处理机制,它与传统IO基于流的处理方式不同,NIO支持面向缓冲区的(Buffer-oriented)、基于通道的(Channel-based)I/O操作。在Java NIO中,Buffer类是...
- FLIP-6部署及处理模型演进:介绍Flink 1.5版本对部署模型和处理模型的主要变更。 通过学习这些知识点,读者可以对Flink有一个全面的了解,从基础架构到数据处理流程,再到容错机制和优化策略。对于希望深入研究...
2. **事件驱动编程**:Java的`java.awt.event`和`javax.swing.event`包提供了事件监听和处理机制,允许程序员定义对特定事件的响应。例如,用户界面中的按钮点击事件可以触发特定的处理函数。 3. **非阻塞I/O**:...
1. 数据写入后,调用`flip()`方法,将缓冲区准备为读取模式,`position`会重置为0,`limit`设置为写入的位置。 2. 调用`clear()`方法,重置`position`为0,但不改变缓冲区数据,以便再次写入。 3. 使用`get()`和`put...
对于自定义的编码格式,可以使用BitSet或ByteBuffer等工具进行处理。 最后,我们还要注意性能优化。由于图像处理通常涉及大量的计算,因此在Java中进行图像处理时,应考虑使用多线程、缓存策略以及避免不必要的对象...