NIO缓冲区基本操作:rewind(),clear(),flip()
rewind()
rewind()方法将position置0,清除mark,它的作用在于为提取Buffer的有效数据做准备。
ByteBuffer byteBuf = ByteBuffer.allocate(8);
byteBuf.put("hello".getBytes());
byteBuf.rewind(); // #1
while (byteBuf.hasRemaining()) { //是否还有剩余的元素,即position<limit
System.out.print(byteBuf.get() + ","); // 打印出各个字符的ASCII码值,104,101,108,108,111,0,0,0,
}
在#1处,rewind前和rewind后的示意图如下所示
-----> 
clear()
clear()方法将position置0,清除mark,与rewind()方法不同的是,它还会将limit置为capacity的大小,这个方法用于“清空”缓冲区。
注意,清空打上了引号,因为它的作用仅仅是将position、limit等这些标志位复原,并非清空了真实的数据
ByteBuffer byteBuf = ByteBuffer.allocate(8);
byteBuf.put("hello".getBytes());
byteBuf.limit(5);
byteBuf.clear(); // #1 清空缓冲区
while (byteBuf.hasRemaining()) { //是否还有剩余的元素,即position<limit
System.out.print(byteBuf.get() + ","); // 表现的和上面一样,打印出各个字符的ASCII码值,104,101,108,108,111,0,0,0,
}
在#1处,clear前和clear后的示意图如下所示
------> 
flip()
flip()方法将position置0,清除mark,然后将limit置为position的大小,通常在读写转换时使用。
ByteBuffer byteBuf = ByteBuffer.allocate(8);
byteBuf.put("hello".getBytes());
byteBuf.flip(); //#1 position置为limit
while (byteBuf.hasRemaining()) { //是否还有剩余的元素,即position<limit
System.out.print(byteBuf.get() + ","); // 仅打印出"hello"的ASCII码值,104,101,108,108,111,
}
在#1处,flip前和flip后的示意图如下所示
-----> 
NIO缓冲区基本操作:rewind(),clear(),flip()的更多相关文章
- NIO之Buffer的clear()、rewind()、flip()方法的区别
Java的NIO中有关Buffer的几种常用方法比如clear,rewind和flip到底有哪些区别.下面给大家这三种方法的源码,方便大家记忆.clear()方法用于写模式,其作用为情况Buffer中 ...
- java nio 缓冲区(一)
本文来自于我的个人博客:java nio 缓冲区(一) 我们以Buffer类開始对java.nio包的浏览历程.这些类是java.nio的构造基础. 这个系列中,我们将尾随<java NIO ...
- Java NIO 缓冲区
Java NIO 在JDK1.4的时候引入,主要解决传统IO的一些性能问题.NIO 主要内容包含 Buffer .Channel.Selector等内容,本文主要讲解Buffer相关的内容. Buff ...
- java.nio.ByteBuffer中flip,rewind,clear方法的区别
对缓冲区的读写操作首先要知道缓冲区的下限.上限和当前位置.下面这些变量的值对Buffer类中的某些操作有着至关重要的作用: limit:所有对Buffer读写操作都会以limit变量的值作为上限. p ...
- Java NIO -- 缓冲区(Buffer)的数据存取
缓冲区(Buffer): 一个用于特定基本数据类型的容器.由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类.Java NIO 中的 Buffer 主要用于与 NIO 通道进行 ...
- JAVA NIO缓冲区(Buffer)------ByteBuffer常用方法
参考:https://blog.csdn.net/xialong_927/article/details/81044759 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I ...
- Java NIO 缓冲区 Buffer
缓冲区 Buffer 是 Java NIO 中一个核心概念,它是一个线性结构,容量有限,存放原始类型数据(boolean 除外)的容器. 1. Buffer 中可以存放的数据类型 java.nio.B ...
- Netty精粹之玩转NIO缓冲区
摘要: 在JAVA NIO相关的组件中,ByteBuffer是除了Selector.Channel之外的另一个很重要的组件,它是直接和Channel打交道的缓冲区,通常场景或是从ByteBuffer写 ...
- java nio 缓冲区读写数据(图形详解)
Position 您可以回想一下,缓冲区实际上就是美化了的数组.在从通道读取时,您将所读取的数据放到底层的数组中. position 变量跟踪已经写了多少数据.更准确地说,它指定了下一个字节将放到数组 ...
随机推荐
- Guideline 5.2.1 - Legal - Intellectual Property 解决方案
最近在上架公司公司项目的时候遇到这个问题什么5.2.1 然后去了解发现最近不少人都遇到了这个问题.先说一下 我上架的APP是一个医疗的APP然后说需要什么医疗资质,估计是账号的公司资质不够吧.后面和苹 ...
- Swift Write to file 到电脑桌面
(arr as NSArray).write(toFile: "Users/你的用户名/Desktop/mian.plist", atomically: true)
- Swift 中 insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 用法详解
insetBy(dx: CGFloat, dy: CGFloat) -> CGRect 点击头文件进去 可以发现它是返回的一个CGRect insetBy方法是CGRect 的一个方法 dx后面 ...
- 前端图片缓存之通过img标签加载GIF只能播放一次问题(转载)
最近项目中要求再网页中插入一张gif图片,让用户每次到达该位置时动一次,所以我们就制作了一张只动一次的gif图片通过img标签引入.当用户进入该位置时,通过remove()清除图片然后重新append ...
- 第七篇 python基础之函数,递归,内置函数
一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因 ...
- Metasploit
1.启动Metasploit 声明:本次渗透测试的主机是我自己在自己的攻击主机上搭建的另一个操作系统,为了真实性设置了常见的IP地址,如有重合但绝对不是任何实体公司或者单位的IP地址. 所以不承担任何 ...
- bootstrap-table 刷新页面数据
bom.bootstrapTable('load',msg['object']);//这一步 务必要添加. if(msg['code']==1){ bom.find('tbody').css('dis ...
- 论文阅读笔记十八:ENet: A Deep Neural Network Architecture for Real-Time Semantic Segmentation(CVPR2016)
论文源址:https://arxiv.org/abs/1606.02147 tensorflow github: https://github.com/kwotsin/TensorFlow-ENet ...
- 数据增强(每10度进行旋转,进行一次增强,然后对每张图片进行扩充10张patch,最后得到原始图片数*37*10数量的图片)
# -*- coding: utf-8 -*-"""Fourmi Editor This is a temporary script file.""& ...
- python 作用域
什么是命名空间 == 对一个名字起作用的范围 # def test():# print("----test----") # import test# test.test() # f ...