[Java] 바이트 단위 스트림

2020. 7. 12. 18:13Language/Java

1. 바이트 단위 스트림

1) InputStream

바이트 단위 입력 스트림 최상위 클래스이다.

종류 설명
FileInputStream 파일에서 바이트 단위로 자료를 읽음
ByteArrayInputStream 바이트 배열 메모리에서 바이트 단위로 자료를 읽음
FilterInputStream 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

2) OutputStream

바이트 단위 출력 스트림 최상위 클래스이다.

종류 설명
FileOutputStream 바이트 단위로 파일에 자료를 작성
ByteArrayOutputStream 바이트 배열에 바이트 단위로 자료를 작성
FilterOutputStream 기반 스트림에서 자료를 작성할 때 추가 기능을 제공하는 보조 스트림의 상위 클래스

 

 

 

2. FileInputStream

파일에 한 바이트씩 자료를 읽는데 사용한다. 한글과 같은 멀티 바이트에는 사용 불가하다(FileReader, FileWriter 사용). 입력 스트림은 파일이 없는 경우 예외 발생한다.

1) try - catch - finally

한글(문자)은 한 바이트씩 읽기 때문에 깨져서 나온다. 한글은 System.in으로 감싸서 해결이 가능하다.

FileInputStream, input.txt
구현 화면

2) try - catch - resource (AutoCloseable)

FileInputStreamTest2, input.txt
구현 화면

3) Byte[]를 이용한 읽기 (1)

한번에 읽기 때문에 한 바이트씩 읽는 것 보다 빠르다.

FileInputStreamTest3, input2.txt
구현 화면

※ 읽은 개수 만큼 출력하지 않기 때문에 버퍼에 가비지가 남는다.

 

4) Byte[]를 이용한 읽기 (2)

읽은 개수 만큼 출력을 하기 위한 방식이다.

FileInputStreamTest3, input2.txt
구현 화면

 

 

 

3. FileOutputStream

파일에 한 바이트씩 자료를 쓰는데 사용한다. 한글과 같은 멀티 바이트에는 사용 불가하다(FileReader, FileWriter 사용). 출력 스트림은 파일이 없는 경우 파일을 생성하여 출력한다. 파일이 없을 경우 생성이 되며, true를 통해 append가 가능하다.

 

FileOutputStreamTest, output.txt

 

 

 

4. FileInputStream, FileOutputStream 응용

읽고 쓰기를 동시에 사용한다.

 

FileOutputStream2, data.txt


[참고] github.com/ozofweird/Java_Practice

728x90

'Language > Java' 카테고리의 다른 글

[Java] 보조 스트림  (0) 2020.07.13
[Java] 문자 단위 스트림  (0) 2020.07.13
[Java] 표준 입출력  (0) 2020.07.12
[Java] 자바 입출력 스트림  (0) 2020.07.12