Java/Tip & Tech
java.nio.Buffer 클래스에서 clear(), rewind(), flip() 에 따른 capacity, limit, position 값의 변화...
Huikyun
2009. 6. 3. 19:18
Java 1.4.x 버전 부터 제공되고 있는 nio 패키지를 공부하다보면 Buffer 에 대해 반드시 알고 넘어가야 한다.
업무 시간에 몰래 공부한 내용을 간단하게 정리해 보았다.
1. flip()
flip() 메소드를 실행하면 limit = position, position = 0 으로 변경된다.
예제
결과
2. rewind()
rewind() 메소드를 실행하면 position = 0 으로 변경된다.
예제
결과
3. clear()
clear() 메소드를 실행하면 limit = capacity, position = 0 으로 변경된다.
예제
결과
업무 시간에 몰래 공부한 내용을 간단하게 정리해 보았다.
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]
[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]
[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]
[Capacity=10, Limit=10, Position=5]
[Capacity=10, Limit=10, Position=0]