Mark标记的使用
package com.nio;
import java.nio.ByteBuffer;
/**
* 缓存区(Buffer):在java NIO 中负责数据点额存取。缓存区就是数组。用于存储不同数据类型的数据
Mark标记
规律: 0<=mark<=position<=limit<=capacity
*/
public class TestBufferMark {
public static void main(String[] args) {
String str="abcde";
//1.分配一个指定大小的缓存区
ByteBuffer buffer = ByteBuffer.allocate(1024);
buffer.put(str.getBytes());
buffer.flip();
byte[] dst = new byte[buffer.limit()];
buffer.get(dst,0,2);
System.out.println(buffer.position());
System.out.println(new String(dst,0,2));
//mark():标记
buffer.mark();
buffer.get(dst,2,2);
System.out.println(buffer.position());
System.out.println(new String(dst,2,2));
//reset():恢复到mark的位置
buffer.reset();
System.out.println(buffer.position());
//判断缓存区中是否还有可以操作的数据
if(buffer.hasRemaining()){
//获取缓存区中可以操作的数量
System.out.println(buffer.remaining());
}
}
}
运行结果: 2 ab 4 cd 2 3
|
package com.nio;
|
浙公网安备 33010602011771号