Java/Tip & Tech2009. 6. 3. 19:18

Java 1.4.x 버전 부터 제공되고 있는 nio 패키지를 공부하다보면 Buffer 에 대해 반드시 알고 넘어가야 한다.
업무 시간에 몰래 공부한 내용을 간단하게 정리해 보았다.

1. flip()

flip() 메소드를 실행하면 limit = position, position = 0 으로 변경된다.

예제
		ByteBuffer buffer = ByteBuffer.allocateDirect(10);
		printBufferProperties(buffer);
		
		for (int i = 0; i < 5; i++)
			buffer.put((byte) i);
		printBufferProperties(buffer);
		
		buffer.flip();		
		printBufferProperties(buffer);

결과

[Capacity=10, Limit=10, Position=0]
[Capacity=10, Limit=10, Position=5]
[Capacity=10, Limit=5, Position=0]



2. rewind()

rewind() 메소드를 실행하면 position = 0 으로 변경된다.

예제
		ByteBuffer buffer = ByteBuffer.allocateDirect(10);
		printBufferProperties(buffer);
		
		for (int i = 0; i < 5; i++)
			buffer.put((byte) i);
		printBufferProperties(buffer);
		
		buffer.rewind();		
		printBufferProperties(buffer);

결과

[Capacity=10, Limit=10, Position=0]
[Capacity=10, Limit=10, Position=5]
[Capacity=10, Limit=5, Position=0]



3. clear()

clear() 메소드를 실행하면 limit = capacity, position = 0 으로 변경된다.

예제
		ByteBuffer buffer = ByteBuffer.allocateDirect(10);
		printBufferProperties(buffer);
		
		for (int i = 0; i < 5; i++)
			buffer.put((byte) i);
		printBufferProperties(buffer);
		
		buffer.clear();		
		printBufferProperties(buffer);

결과

[Capacity=10, Limit=10, Position=0]
[Capacity=10, Limit=10, Position=5]
[Capacity=10, Limit=10, Position=0]

Posted by Huikyun