ImageInputStreamImpl
ImageInputStreamImpl (이미지 입력 스트림 구현)
ImageInputStream 인터페이스를 구현하는 추상 클래스예요. 서브클래스가 구현해야 할 메서드 수를 줄이기 위해 설계되었어요. 특히 바이트 순서 해석, 버퍼링, 마크/리셋, 데이터 폐기, 닫기, 정리(dispose) 같은 세부 처리를 대부분 담당해요.
본문
ImageInputStreamImpl은 보호된(protected) 필드로 스트림 상태를 관리해요. streamPos는 현재 스트림 위치, bitOffset은 현재 비트 오프셋, flushedPos는 이미 flush된 위치를 나타내요. byteOrder는 스트림의 바이트 순서로, ByteOrder.BIG_ENDIAN이 네트워크 바이트 순서를, LITTLE_ENDIAN이 그 반대를 의미해요.
protected ByteOrder byteOrder;
protected long streamPos;
protected int bitOffset;
protected long flushedPos;
서브클래스는 read(), read(byte[], int, int)만 구현하면 되고, 나머지 타입별 읽기 메서드는 이 클래스가 기본 구현을 제공해요. checkClosed()는 스트림이 닫혀 있는지 확인하고, 닫혀 있으면 IOException을 던져요. flushBefore(long)는 지정 위치 이전의 데이터를 버퍼에서 해제해 메모리를 절약해요.