package nio;
import java.nio.ByteBuffer;
public class BufferTest {
public static void main(String[] args) throws InterruptedException {
ByteBuffer buf = ByteBuffer.allocate(9);
System.out.println("初始capacity = " +buf.capacity());
System.out.println("初始position = " + buf.position());
System.out.println("初始limit = " + buf.limit());
System.out.println("初始mark = " + buf.mark());
buf.put(“123456789”.getBytes());
System.out.println("put寫之後的position = " + buf.position());
System.out.println("put寫之後的limit = " + buf.limit());
System.out.println("put寫之後的mark = " + buf.mark());
buf.flip();//put寫之後要flip,將position置爲0,將limit置爲寫入的最後一個元素(待操作的下一個元素)所在的索引位置
System.out.println("flip之後的position = " + buf.position());
System.out.println("flip之後的limit = " + buf.limit());
System.out.println("flip之後的mark = " + buf.mark());
/*
while(buf.hasRemaining()){
System.out.println("#" + (char)buf.get());
}
System.out.println("get之後的position = " + buf.position());
System.out.println("get之後的limit = " + buf.limit());
System.out.println("get之後的mark = " + buf.mark());
*/
for(int i = 0 ; i <= 3; i++ ){
System.out.println("#" + (char)buf.get());
}
System.out.println("部分get讀之後的position = " + buf.position());
buf.compact();
System.out.println("compact之後的position = " + buf.position());
System.out.println("compact之後的limit = " + buf.limit());
System.out.println("compact之後的mark = " + buf.mark());
buf.put("abcd".getBytes());
buf.flip();
while(buf.hasRemaining()){
System.out.println("#" + (char)buf.get());
}
buf.clear();
System.out.println("clear之後的position = " + buf.position());
System.out.println("clear之後的limit = " + buf.limit());
System.out.println("clear之後的mark = " + buf.mark());
}
}