Java NIO之Buffer詳解 屬性capacity/position/limit/mark 方法put(X)/get()/flip()/compact()/clear()

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());
}

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章