PushbackInputStream — 바이트를 다시 밀어 넣는 입력 스트림

PushbackInputStream — 바이트를 다시 밀어 넣는 입력 스트림

PushbackInputStream은 입력 스트림에 pushback(밀어 넣기) 기능을 더하는 클래스예요. 읽은 바이트를 스트림에 다시 "밀어 넣어" 다시 읽을 수 있게 해 줍니다. 이 기능은 스트림에서 한 바이트를 "엿보고(peek)" 필요하면 다시 넣어야 하는 파싱 작업에 유용해요.

출처: Java API Reference

본문

이 클래스는 java.io.InputStreamjava.io.FilterInputStream을 상속하며 Closeable, AutoCloseable을 구현합니다.

필드

  • protected byte[] buf — 밀어 넣을 바이트가 저장되는 pushback 버퍼예요.
  • protected int pos — 이 pushback 버퍼의 현재 위치예요. buf[0]부터 buf[pos-1]까지가 밀어 넣는 바이트이고, [pos]부터 [buf.length-1]까지가 미래에 밀어 넣을 바이트가 놓일 공간이에요.

생성자

  • PushbackInputStream(InputStream in, int size) — 지정한 pushback 버퍼 크기(size)로 PushbackInputStream을 만들어요. size <= 0이면 IllegalArgumentException을 던져요.
  • PushbackInputStream(InputStream in) — 1바이트 pushback 버퍼로 만들어요.

메서드

  • int read() — 다음 바이트를 읽어요. pushback 버퍼에 바이트가 있으면 그 바이트를, 아니면 기반 스트림에서 읽어요.
  • int read(byte[] b, int off, int len) — 최대 len 바이트를 바이트 배열로 읽어요.
  • void unread(int b) — 바이트 하나를 pushback 버퍼에 다시 넣어요.
  • void unread(byte[] b, int off, int len) — 바이트 배열의 일부를 다시 넣어요.
  • void unread(byte[] b) — 바이트 배열 전체를 다시 넣어요.
  • long skip(long n)n 바이트를 건너뛰고 폐기해요.
  • int available() — 블로킹 없이 읽을 수 있는 바이트 수를 반환해요.
  • void mark(int readlimit) — 현재 위치를 표시해요.
  • void reset() — 스트림을 마지막 mark 시점으로 되돌려요.
  • boolean markSupported() — mark/reset 지원 여부를 테스트해요.
  • void close() — 스트림을 닫고 관련 시스템 자원을 해제해요.

PushbackInputStream은 토큰 파싱 등에서 읽은 데이터를 되돌려야 할 때 사용해요.

더 알아보기 (Learn more)