-> 블로그 이전

[Java] 바이트 스트림

2021. 12. 17. 16:04Language`/Java

바이트 스트림 클래스

- 바이트 단위로 바이너리 데이터가 흐르는 스트림

- 텍스트 파일(문자 데이터) + 이미지 파일(바이너리 데이터) 모두 입출력 가능

  • InputStream/OutputStream : 추상 클래스 / 바이트 입출력 처리를 위한 기능 보유 (슈퍼 클래스)
  • FileInputStream/FileOutputStream : 파일 입출력을 위한 클래스 / 파일로부터 바이너리 데이터를 읽기/쓰기 가능
  • DataInputStream/DataOutputStream : boolean, char, int, long,... 타입의 값을 바이너리 형태로 입출력 / 문자열도 바이너리 형태로 입출력

바이너리 파일 쓰기 FileOutputStream

- 변수나 배열에 들어 있는 바이너리 값(이진수)들을 그대로 파일에 저장 (.out파일)

  • FileOutputStream(File file) : file에 데이터를 저장할 FileOutputStream 생성
  • FileOutputStream(String name) : name 파일에 데이터를 저장할 FileOutputStream 생성
  • FileOutputStream(File file, boolean append) : append가 true이면 파일의 마지막부터 데이터 저장
  • FileOutputStream(String name, boolean append) : append가 true이면 파일의 마지막부터 데이터 저장

 

OutputStream/FileOutputStream 메소드

void write(int b) 

  • int형으로 넘겨진 한 바이트를 바이너리 데이터로 파일에 저장

void write(byte[] b) 

  • 배열 b의 바이트를 모두 바이너리 데이터로 파일에 저장

void write(byte[] b, int off, int len) 

  • 배열 b의 offset부터 len 크기만큼 바이너리 데이터로 파일에 저장

void flush() 

  • 스트림에 남아있는 데이터들을 버퍼에서 없애기

void close() 

  • 출력 스트림을 닫고 관련된 시스템 자원 해제

바이너리 파일 읽기 FileInputStream

- 파일로 부터 바이너리 값을 그대로 읽는다

  • FileInputStream(File file) : file이 지정하는 파일로부터 읽는 FileInputStream 생성
  • FileInputStream(String name) : name이 지정하는 파일로부터 읽는 FileInputStream 생성

 

InputStream/FileInputStream 메소드

int read() 

  • 입력 스트림에서 한 바이트를 읽어서 int형으로 리턴

int read(byte[] b) 

  • 배열 b의 최대 크기만큼 바이트를 읽는다 / 중간에 EOF만나면 실제 읽은 바이트 수 리턴

int read(byte[] b, int off, int len) 

  • 최대 len개의 바이트를 읽어서 배열 b의 off위치부터 저장 / 중간에 EOF만나면 실제 읽은 바이트 수 리턴

int available() 

  • 입력 스트림에서 현재 읽을 수 있는 바이트 수 리턴

void close() 

  • 입력 스트림을 닫고 관련된 시스템 자원 해제