[Java] 바이트 단위 스트림
2020. 7. 12. 18:13ㆍLanguage/Java
1. 바이트 단위 스트림
1) InputStream
바이트 단위 입력 스트림 최상위 클래스이다.
종류 | 설명 |
FileInputStream | 파일에서 바이트 단위로 자료를 읽음 |
ByteArrayInputStream | 바이트 배열 메모리에서 바이트 단위로 자료를 읽음 |
FilterInputStream | 기반 스트림에서 자료를 읽을 때 추가 기능을 제공하는 보조 스트림의 상위 클래스 |
2) OutputStream
바이트 단위 출력 스트림 최상위 클래스이다.
종류 | 설명 |
FileOutputStream | 바이트 단위로 파일에 자료를 작성 |
ByteArrayOutputStream | 바이트 배열에 바이트 단위로 자료를 작성 |
FilterOutputStream | 기반 스트림에서 자료를 작성할 때 추가 기능을 제공하는 보조 스트림의 상위 클래스 |
2. FileInputStream
파일에 한 바이트씩 자료를 읽는데 사용한다. 한글과 같은 멀티 바이트에는 사용 불가하다(FileReader, FileWriter 사용). 입력 스트림은 파일이 없는 경우 예외 발생한다.
1) try - catch - finally
한글(문자)은 한 바이트씩 읽기 때문에 깨져서 나온다. 한글은 System.in으로 감싸서 해결이 가능하다.
2) try - catch - resource (AutoCloseable)
3) Byte[]를 이용한 읽기 (1)
한번에 읽기 때문에 한 바이트씩 읽는 것 보다 빠르다.
※ 읽은 개수 만큼 출력하지 않기 때문에 버퍼에 가비지가 남는다.
4) Byte[]를 이용한 읽기 (2)
읽은 개수 만큼 출력을 하기 위한 방식이다.
3. FileOutputStream
파일에 한 바이트씩 자료를 쓰는데 사용한다. 한글과 같은 멀티 바이트에는 사용 불가하다(FileReader, FileWriter 사용). 출력 스트림은 파일이 없는 경우 파일을 생성하여 출력한다. 파일이 없을 경우 생성이 되며, true를 통해 append가 가능하다.
4. FileInputStream, FileOutputStream 응용
읽고 쓰기를 동시에 사용한다.
728x90
'Language > Java' 카테고리의 다른 글
[Java] 보조 스트림 (0) | 2020.07.13 |
---|---|
[Java] 문자 단위 스트림 (0) | 2020.07.13 |
[Java] 표준 입출력 (0) | 2020.07.12 |
[Java] 자바 입출력 스트림 (0) | 2020.07.12 |