FileInputStream — 파일에서 바이트 입력 스트림 읽기

FileInputStream — 파일에서 바이트 입력 스트림 읽기

FileInputStream은 파일 시스템의 파일에서 입력 바이트를 얻어요. 사용할 수 있는 파일은 호스트 환경에 따라 달라지며, 이 클래스는 이미지 데이터 같은 원시 바이트 스트림을 읽기 위한 것이에요. 문자 스트림을 읽으려면 FileReader를 사용하는 것이 좋아요.

출처: Java API Reference

본문

이 클래스는 java.io.InputStream을 상속하며 Closeable, AutoCloseable을 구현합니다. close() 메서드는 직접 또는 try-with-resources 문으로 호출해 스트림이 사용하는 자원을 해제해야 해요. 하위 클래스는 스트림이 도달 불가능해진 후 자원 정리가 필요하면 Cleaner나 다른 메커니즘을 사용해야 해요.

생성자

  • FileInputStream(String name) — 파일 시스템에서 경로명 name이 가리키는 파일에 연결을 열어 FileInputStream을 만들어요. 파일이 존재하지 않거나 디렉터리·다른 이유로 열 수 없으면 FileNotFoundException을 던져요.
  • FileInputStream(File file)File 객체 file이 가리키는 실제 파일에 연결을 열어 만들어요.
  • FileInputStream(FileDescriptor fdObj) — 실제 파일에 대한 기존 연결을 나타내는 파일 설명자 fdObj를 사용해 만들어요.

메서드

  • int read() — 이 입력 스트림에서 바이트 하나를 읽어요. 끝에 도달하면 -1을 반환해요.
  • int read(byte[] b) — 최대 b.length 바이트를 바이트 배열로 읽어요.
  • int read(byte[] b, int off, int len) — 최대 len 바이트를 바이트 배열로 읽어요.
  • long skip(long n) — 입력 스트림에서 n 바이트를 건너뛰고 폐기해요.
  • int available() — 블로킹 없이 읽을 수 있는 바이트 수의 추정치를 반환해요.
  • void close() — 이 파일 입력 스트림을 닫고 관련 시스템 자원을 해제해요.
  • FileChannel getChannel() — 이 파일 입력 스트림과 연결된 고유한 FileChannel 객체를 반환해요.
  • final FileDescriptor getFD() — 실제 파일에 대한 연결을 나타내는 FileDescriptor 객체를 반환해요.

FileInputStream은 파일에서 원시 바이트를 순차적으로 읽는 전통적인 방식이며, getChannel()을 통해 NIO로 전환하거나 FileReader로 문자 기반 읽기를 할 수 있어요.

더 알아보기 (Learn more)