-
Java: 입출력(I/O) 스트림(Stream) 기초 개념각종 학습 요약/Java 2022. 5. 20. 14:19
입출력(I/O) 스트림(Stream) 기초 개념
데이터를 주고받는 도구인 스트림에 대한 개념을 알아봅니다.
스트림이란?
프로그램은 통신한다. 통신의 대상은 시스템이 될 수도 있고, 파일이 될 수도 있다. 무엇이 되었든, 그 대상과 데이터를 주고 받을 수 있다.
그렇게 데이터를 주고 받으려면 데이터가 오가는 길목이 필요하다. 그것이 바로 스트림이다.
주체를 기준으로 데이터가 들어오는 스트림을 Input Stream이라고 하고, 데이터를 내보내는 스트림을 Output Stream이라고 한다.Java에서의 스트림 1 - (File)Input/OutputStream
Java에서 기본적인 Input/OutputStream은 바이트 단위로 데이터를 읽고 전송한다.
근데 기본 스트림대로 한 바이트 한 바이트 나르고 있으면 너무 느리니까, 양동이 같이 몇 바이트씩 묶어서 양동이를 나를 수도 있다. 30바이트짜리 양동이면 한번에 30바이트씩 나르게 되는 것이다.
이때 이 양동이를 버퍼라고 하고, BufferedInput/OutputStream이라고 한다. 기본 스트림의 애드온 같은 느낌으로 보면 된다.Java에서의 스트림 2 - (File)Reader/Writer
바이트라는 건 결국 숫자다. 모든 데이터가 숫자로 다뤄지긴 하지만, 어쨌든 고정된 형태의 데이터를 다루고 싶을 때가 있다. 그렇게 가장 많이 다뤄지는 데이터은 아마 텍스트일 것이다. 그렇다면 텍스트를 한 바이트 한 바이트 깎아야 할 이유가 있을까? 어차피 한 글자 당 몇 바이트(인코딩에 따라서)로 고정되어 있을 텐데 말이다.
그래서 Java에는 Reader/Writer라는 텍스트 전용 읽기/쓰기 스트림이 있다. 이 스트림은 한 글자 단위로 데이터를 읽고 쓴다.
또한 Reader/Writer도 Buffered 클래스가 준비되어 있으므로, 필요에 따라 사용할 수 있다. 사용법은 기본 스트림과 같다.'각종 학습 요약 > Java' 카테고리의 다른 글
Java: JDBC API 기본 개념 이해 (0) 2022.06.30 Java: 람다와 스트림의 기본적인 이해와 사용법 - 2 (2) 2022.05.19 Java: 람다와 스트림의 기본적인 이해와 사용법 - 1 (0) 2022.05.19 Java: Enum 클래스의 기본적인 이해 (0) 2022.05.19 Java: 내부 클래스(Inner Class)의 기본적인 이해 (4) 2022.05.18 Java: 컬렉션 프레임워크(Collection Framework) 개요 (0) 2022.05.17