Fall in IT.

자바 입출력(I/O )에 대하여 본문

기타

자바 입출력(I/O )에 대하여

D.Y 2016. 11. 9. 22:21

안녕하세요.


오늘은 자바에서 입출력, 즉 I/O에 대해서 용어정리부터 사용방법에 대해서 간단하게 정리해보도록 하겠습니다.



입출력이란?

  • I/O란, input / output의 약자로 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 의미 합니다.

스트림이란?
  • 자바에서 입출력과 같이 데이터를 주고 받는데 사용되는 연결통로를 의미 합니다.
  • 스트림은 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없기 때문에, 입출력을 위해서는 두개의 스트림이 필요합니다.
  • 바이트기반 스트림입니다. (스트림은 바이트 단위로 데이터를 전송하며 입출력 대상에 따라 여러 종류의 스트림이 있습니다.)

스트림 종류

  • FileInputStream/FileOutputStream, ByteArrayInputStream/ByteArrayOutputStream, PipedInputStream/PipedOutputStream 등
  • 어떤 대상에 대해서 작업을 할 것인지 정하고 그에 맞는 스트림을 선택해서 사용하면 됩니다.
  • 여러종류의 스트림들은 모두 InputStream, OutputStream의 자손들이며, 각각 읽고 쓰는데 필요한 추상메서드(read(), write())를 구현해 놓은 것입니다.

보조스트림이란?
  • 스트림으로 단독으로 쓰일 수 없고, 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있는 말그대로 보조스트림입니다.
  • 스트림을 먼저 생성한 다음에 생성한 인스턴스를 생성하여 보조스트림을 생성해 사용합니다.

example)
FileInputStream fileInputStream = new FileInputStream("file.txt");
BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream);
bufferedInputStream.read();

※ 보조스트림을 사용했을때, 성능차이가 상당하기 때문에 대부분 사용합니다.


보조스트림의 종류
  • BufferedInputStream : 버퍼를 이용한 입출력 성능향상
  • ObjectInputStream : 데이터를 객체단위로 읽고 쓰는데 사용. 주로 파일을 이용하여 객체를 직렬화 하는데 사용합니다.
  • DataInputStream
  • LineNumberInputStream
  • DigestInputStream
  • PushbackInputStream 등
보조스트림 역시 모두 InputStream, OutputStream의 자손들입니다.


문자기반 스트림이란?
  • 문자데이터를 입출력할때 사용하는 문자기반 스트림을 의미합니다.
  • 자바는 C언어와 달리 문자를 의미하는 char형이 2byte이기 때문에 바이트 스트림으로 문자를 처리하는데 어려움이있습니다.
  • 따라서, 이를 보완하기위해 문자기반의 스트림이 제공됩니다. 
  • 바이트기반 스트림과 이름만 조금 다를 뿐 활용방법은 거의 같습니다.
  • InputStream = Reader, OutputStream = Writer

문자스트림의 종류

Comments