Buffer - Java NIO
Java NIO의 Buffer 클래스는 데이터를 읽고 쓰기 위해 다양한 API를 제공합니다.
clear(): 새로운 쓰기를 준비합니다.
flip(): 읽기를 준비합니다.
rewind(): 처음부터 다시 읽기 위해 사용합니다.
mark(): 현재 위치를 저장합니다.
reset(): 마지막
mark위치로 돌아갑니다.remaining(): 읽거나 쓸 수 있는 데이터의 양을 반환합니다.
hasRemaining(): 버퍼에 더 읽거나 쓸 데이터가 있는지 확인합니다.
import java.nio.ByteBuffer;
public class BufferExample {
public static void main(String[] args) {
// 1. Buffer 생성
ByteBuffer buffer = ByteBuffer.allocate(10);
// 2. 데이터 쓰기
buffer.put((byte) 1);
buffer.put((byte) 2);
buffer.put((byte) 3);
// 3. 읽기 준비 (flip 호출)
buffer.flip(); // position을 0으로 설정하고 limit을 현재 position으로 설정
// 4. 데이터 읽기
while (buffer.hasRemaining()) {
System.out.println("Read value: " + buffer.get());
}
// 5. Buffer 재사용을 위한 준비 (clear 호출)
buffer.clear(); // position을 0으로 설정하고 limit을 capacity로 설정
// 6. 다시 데이터 쓰기
buffer.put((byte) 4);
buffer.put((byte) 5);
// 7. mark()와 reset() 사용 예시
buffer.mark(); // 현재 position (2)을 mark
buffer.put((byte) 6);
// position을 limit으로 설정하여 읽기 모드로 전환 (flip 호출)
buffer.flip();
// 8. 데이터 읽기
while (buffer.hasRemaining()) {
System.out.println("Read value after reset: " + buffer.get());
}
// 9. reset() 호출하여 mark된 위치로 돌아감
buffer.reset(); // mark된 위치 (2)로 position을 되돌림
System.out.println("Position after reset: " + buffer.position());
// 10. remaining() 사용 예시
System.out.println("Remaining elements: " + buffer.remaining());
// 11. rewind() 사용 예시
buffer.rewind(); // position을 0으로 설정
System.out.println("Position after rewind: " + buffer.position());
// 12. 다시 데이터 읽기
while (buffer.hasRemaining()) {
System.out.println("Read value after rewind: " + buffer.get());
}
}
}Last updated