直接緩衝區與間接緩衝區的簡單例子

public class buffer_test {code

public static void main(String[] args) {

    String s="hello word";
	
    ByteBuffer b=ByteBuffer.allocate(1024);
	
    System.out.println(b.position());
	
    System.out.println(b.limit());
	
    System.out.println(b.capacity());
	
    System.out.println(b.array());
	
    System.out.println("put-------------");
	
    b.put(s.getBytes());
	
    System.out.println(b.position());
	
    System.out.println(b.limit());
	
    System.out.println(b.capacity());
	
    System.out.println(b.array());
	
    System.out.println("flip----------");
	
    //切換模式
	
    b.flip();
	
    System.out.println(b.position());
	
    System.out.println(b.limit());
	
    System.out.println(b.capacity());

    //讀緩衝器
    System.out.println("read-------------");
    byte [] c=new byte[b.limit()];
    b.get(c);
    for(int i=0;i<c.length;i++)
        System.out.print((char)c[i]);
    System.out.println();
    System.out.println(b.position());
    System.out.println(b.limit());
    System.out.println(b.capacity());
    System.out.println("rewind---------");
    //重複讀
    b.rewind();
    for(int i=0;i<c.length;i++)
        System.out.print((char)c[i]);
    System.out.println();
    System.out.println(b.position());
    System.out.println(b.limit());
    System.out.println(b.capacity());
    //把position位置給mark
    //b.mark();
    //處理只是把位置回到最早的位置
    System.out.println("clear==========");
    b.clear();
    System.out.println(b.position());
    System.out.println(b.limit());
    System.out.println(b.capacity());

    //判斷是否爲直接緩衝區
    System.out.println("-------------");
    System.out.println(b.isDirect());
}

}ip

相關文章
相關標籤/搜索