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;
|