[Java] 입출력 I/O

2023. 3. 5. 21:54Programming/Java

반응형

1. 입출력이란?

컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고받는 것을 말한다.

 

2. 스트림(Stream)이란?

스트림이란 데이터를  운반하는데 사용되는 연결통로이다.

스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 그래서 입력과 출력을 동시에 수행하려면 입력을 위한 입력스트림(input stream)과 출력을 위한 출력스트림(output stream), 모두 2개의 스트림이 필요하다.

 

3. 바이트기반 스트림 - InputStream, OutStream

스트림은 바이트 단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 입출력스트림이 있다.

이들 모두 InputStream 또는 OutStream의 자손들이며, 각각 읽고 쓰는데 필요한 추상메소드를 자신에 맞게 구현해 놓는다.

입력스트림 출력스트림 입출력 대상의 종류
FileInputStream FileOutputStream 파일
ByteArrayInputStream ByteArrayInputStream 메모리(byte배열)
PipedInputStream PipedOutputStream 프로세스 (프로세스간의 통신)
AudioInputStream AudioInputStream 오디오 장치

 

4. 보조 스트림

보조스트림은 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있느 기능은 없지만 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다.

보조스트림 역시 결국엔 InputStream과 OutputStream의 자손들이므로 입출력 방법이 같다.

입력 출력 설명
FilterInputStream FilterOutputStream 필터를 이용한 입출력 처리
BufferedInputStream BufferedOutputStream 버퍼를 이용한 입출력 처리
DataInputStream DataOutputStream int, float와 같은 기본형 단위(primitive type)로 데이터를 처리하는 기능
SequenceInputStream 없음 두 개의 스트림을 하나로 연결
LineNumberInputStream 없음 읽어 온 데이터의 라인 번호를 카운트 (JDK1.1부터 LineNumberReader로 대체)
ObjectInputStream ObjectOutputStream 데이터를 객체단위로 읽고 쓰는데 사용.
주로 파일을 이용하며 객체 직렬화와 관련있음
없음 PrintStream 버퍼를 이용하며, 추가적인 print관련 기능 (print, printf, println메서드)
PushbackInputStream 없음 버퍼를 이용해서 읽어 온 데이터를 다시 되돌리는 기능 (unread, push back to buffer)

 

5. 문자기반 스트림 - Reader, Writer

Java에서는 한 문자를 의미하는 char형이 1byte가 아니라 2byte이기 때문에 바이트기반의 스트림으로 2byte인 문자를 처리하는 데는 어려움이 있다.

 이 점을 보완하기 위해서 문자기반의 스트림이 제공된다. 문자 데이터를 입출력할 때는 바이트기반 스트림 대신 문자기반 스트림을 사용한다.

 

InputStream -> Reader

OutputStream -> Writer

 

출처 - 자바의 정석

 

Java의 정석 | 남궁성 - 교보문고

Java의 정석 | 자바의 기초부터 실전활용까지 모두 담다!자바의 기초부터 객제지향개념을 넘어 실전활용까지 수록한『Java의 정석』. 저자의 오랜 실무경험과 강의한 내용으로 구성되어 자바를

product.kyobobook.co.kr

 

반응형

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

래퍼(wrapper) 클래스  (0) 2023.02.19
java ... parameter (매개변수)  (0) 2020.12.06