JAVA/Java2021-3
자바 입출력 I/O 스트림
RoarinGom
2021. 10. 22. 22:20
입출력 스트림? (예외 처리를 다 해주어야한다)
-정의
: 입출력 스트림이라고 하는 이유는 자료가 흘러가는 것이 물의 흐름과 같다는 비유에서 유래
( 자바는 입출력이 구현되는 모든 곳에서 스트림을 쓴다.
ex) 파일 디스크, 키보드, 마우스, 네트워크, 메모리 등 모든 자료가 입력되고 출력되는 곳)
-입출력 스트림 구분 (대상, 자료, 기능)
1. 대상 (하나의 스트림으로 입출력을 같이 사용할 수 없다)
입력 스트림
출력 스트림
2. 자료의 종류(원래 자료는 바이트 단위(문자열 1byte), 문자를 많이 사용하기 때문에 2byte 이상 문자용 스트림도 제공)
바이트 스트림
문자 스트림(문자 단위로 핸들링 시에는 인코딩 중요)
3. 기능
기반 스트림(대상에 대해 직접 입출력해주는 스트림)
보조 스트림 (하나씩읽는 것을 버퍼링을 해준다거나 바이트로 읽은것을 문자 바꿔주는 등)
: 실제로 읽고 쓰는 기능은 없으나 다른 스트림을 감싸서 그 스트림을 하는일 + 알파의 일을 해주는 스트림
![]() ![]() |
1. 대상 (입력 스트림 / 출력 스트림) |
![]() ![]() |
2. 자료의 종류 (바이트 스트림 / 문자 스트림) 뒤에 Stream이 붙으면 byte 뒤에 Reader or Writer가 붙으면 문자 |
![]() |
3. 기능 (기반스트림, 보조스트림) 보조스트림은 직접 읽고 쓰는 기능이 없기 때문에 기반 스트림을 생성자의 매개변수로 포함함 (여러개 보조스트림으로 감싸 기능을 더 해 줄 수 도있다. 이 경우는 생성자 매개변수로 보조스트림을 사용) ex) 바이트로 읽어야만 하는 경우 문자로 변환하고 싶을 때 InputStreamReader(FileInputStream()) |