본문 바로가기

혼공단/혼공자1기

[혼공 학습단 1기] 6주차 미션 입출력 스트림 요약 정리 포스팅

반응형
  • 입출력 스트림 : 자바에서 데이터는 스트림을 통해 입출력됩니다. 프로그램이 출발지냐 또는 도착지냐에 따라서 사용하는 스트림의 종류가 결정됩니다. 프로그래밍 도착지이면 흘러온 데이터를 입력받아야 하므로 입력 스트림을 사용합니다. 반대로 프로그램이 출발지면 데이터를 출력해야 하므로 출력 스트림을 사용합니다.
  • InputStream : 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 바이트 기반 입력 스트림은 InputStream 클래스를 상속받아서 만들어집니다. InputStream 클래스에는 바이트 기반 입력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • OutputStream : 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스입니다. OutputStream클래스에는 모든 바이트 기반 출력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • Reader : 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 문자 기반 입력 스트림은 Reader 클래스를 상속받아서 만들어집니다. Reader 클래스에는 문자 기반 입력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • Writer : 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스입니다. 모든 문자 기반 출력 스트림 클래스는 Writer 클래스를 상속받아서 만들어집니다. Writer 클래스는 모든 문자 기반 출력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있습니다.
  • 보조 스트림 :다름 스트림과 연결되어 여러 가지 편리한 기능을 제공해주는 스트림을 말합니다. 보조 스트림은 자체적으로 입출력을 수행할 수 없기 때문에 입출력 소스와 바로 연결되는 InputStream, OutputStream, Reader, Writer등에 연결해서 입출력을 수행합니다. 보조 스트림은 문자 변환, 입출력 성능 향상, 기본 타입 입출력 등의 기능을 제공합니다.
  • 문자 변환 : 소스 스트림이 바이트 기반 스트림 이면서 입출력 데이터가 문자라면 Reader와 Writer로 변환해서 사용하는 것을 고려할 수 있습니다. 그 이유는 문자 입출력은 Reader와 Writer가 편하기 때문입니다. OutputStreamWriter는 Writer로 변환하는 보조 스트림이고, InputStreamReader는 Reader로 변환하는 보조 스트림입니다.
  • 성능 향상 : 기본적으로 출력 스트림은 내부에 작은 버퍼를 가지고 있습니다. 하지만 이것만 으로는  불충분합니다. 보조 스트림 중에는 메모리 버퍼를 추가로 제공하여 프로그램의 실행 성능을 향상시키는 것들이 있습니다. 바이트 기반 스트림에서는 BufferedInputStream, BufferedOutputStream이 있고 문자 기반 스트림에는 BufferedReader, BufferedWriter가 있습니다.
  • 기본 타입 입출력 : DataInputStream과 DataOutputStream 보조 스트림을 연결하면 기본 타입인 boolean, char, short, int, long, float, double을 입출력할 수 있습니다.
  • 개행 출력 : PrintStream/PrintWriter의 println()메소드는 출력할 데이터 끝에 개행 문자인 ‘\n’을 추가합니다. 그래서 출력 시 콘솔이나 파일에서 줄 바꿈이 일어납니다.
  • System.in : 자바는 콘솔에서 키보드의 데이터를 입력받을 수 있도록 System 클래스의 in 정적 필드를 제공합니다. System.in은 InputStream 타입의 필드입니다. 주로 InputStreamReader 보조 스트림과 BufferedReader 보조 스트림을 연결해서 사용하거나, scanner를 이용해서 입력된 문자열을 읽습니다.
  • System.out : 콘솔에서 키보드로 입력된 데이터를 System.in으로 읽었다면, 반대로 콘솔에서 모니터로 데이터를 출력하기 위해서는 System 클래스의 out 정적 필드를 사용합니다. System.out은 PrintStream 타입의 필드입니다. 따라서 PrintStream이 제공하는 print(),println(),printf()와 같은 메소드를 이용해서 모니터로 출력할 수 있습니다.
  • Scanner : Scanner클래스는 입출력 스트림도 아니고, 보조 스트림도 아닙니다. Scanner는 문자 파일이나, 바이트 기반 입출력 스트림에서 라인 단위 문자열을 쉽게 읽도록 하기 위해 java.util 패키지에서 제공하는 클래스입니다.
  • File : java.io 패키지에서 제공하는 File클래스는 파일 및 폴더 정보를 제공해주는 역할을 합니다.

선택 미션 632쪽 2번 문제 풀이

실행결과

 

반응형