NIO之Buffer的clear()、rewind()、flip()方法的区别
2018-01-25 17:33
316 查看
Java的NIO中有关Buffer的几种常用方法比如clear,rewind和flip到底有哪些区别。下面给大家这三种方法的源码,方便大家记忆。
clear()方法用于写模式,其作用为情况Buffer中的内容,所谓清空是指写上限与Buffer的真实容量相同,即limit==capacity,同时将当前写位置置为最前端下标为0处。代码如下:
public final Buffer clear() {
position = 0; //设置当前下标为0
limit = capacity; //设置写越界位置与和Buffer容量相同
mark = -1; //取消标记
return this;
}
rewind()在读写模式下都可用,它单纯的将当前位置置0,同时取消mark标记,仅此而已;也就是说写模式下limit仍保持与Buffer容量相同,只是重头写而已;读模式下limit仍然与rewind()调用之前相同,也就是为flip()调用之前写模式下的position的最后位置,flip()调用后此位置变为了读模式的limit位置,即越界位置,代码如下:
public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}
flip()函数的作用是将写模式转变为读模式,即将写模式下的Buffer中内容的最后位置变为读模式下的limit位置,作为读越界位置,同时将当前读位置置为0,表示转换后重头开始读,同时再消除写模式下的mark标记,代码如下
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
这三种模式下Buffer的capacity不变,其值一直为常量。
clear()方法用于写模式,其作用为情况Buffer中的内容,所谓清空是指写上限与Buffer的真实容量相同,即limit==capacity,同时将当前写位置置为最前端下标为0处。代码如下:
public final Buffer clear() {
position = 0; //设置当前下标为0
limit = capacity; //设置写越界位置与和Buffer容量相同
mark = -1; //取消标记
return this;
}
rewind()在读写模式下都可用,它单纯的将当前位置置0,同时取消mark标记,仅此而已;也就是说写模式下limit仍保持与Buffer容量相同,只是重头写而已;读模式下limit仍然与rewind()调用之前相同,也就是为flip()调用之前写模式下的position的最后位置,flip()调用后此位置变为了读模式的limit位置,即越界位置,代码如下:
public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}
flip()函数的作用是将写模式转变为读模式,即将写模式下的Buffer中内容的最后位置变为读模式下的limit位置,作为读越界位置,同时将当前读位置置为0,表示转换后重头开始读,同时再消除写模式下的mark标记,代码如下
public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}
这三种模式下Buffer的capacity不变,其值一直为常量。
相关文章推荐
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer的clear、flip、rewind方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- (1.28)java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- NIO之Buffer的clear()、rewind()、flip()方法的区别
- java.nio.ByteBuffer中flip、rewind、clear方法的区别
- java的NIO包中ByteBuffer类的clear(),flip(),rewind()方法的意思
- Java NIO之Buffer中flip()、rewind()、clear()方法解析
- NIO中有关Buffer的几种常用方法比如clear,rewind和flip
- java.nio.ByteBuffer 以及flip,clear及rewind区别