18. I/O 입출력

thsamajiki·2022년 10월 25일
0

JAVA

목록 보기
16/24

I/O란?

자바 IO 패키지의 I는 Input, O는 Output을 의미한다. 프로그램 동작 시 들어오는 모든 값을 Input Data 라고 하며파일, 네트워크, 콘솔 등 밖으로 나가는 모든 값을 Output Data라고 한다.결론은 IO는 입력과 출력에 대한 인터페이스드와 클래스들이다.

I/O 종류

I/O는 크게 byte와 char(문자) 단위 입출력으로 나뉜다. 2개의 입출력 클래스는 모두 추상 클래스를 상속받아 만들어지는데, 그 종류는 각기 아래와 같다.

byte 단위 입출력 클래스가 상속받는 클래스

  • InputStream
  • OutputStream

char 단위 입출력 클래스가 상속받는 클래스

  • Reader
  • Writer

InputStream

OutputStream

Reader

Writer

위 4가지의 추상 클래스를 받아들이는 생성자가 있다면

  • 다양한 입출력을 제공하는 클래스

위 4가지의 추상 클래스를 받아들이는 생성자가 없다면

  • 어디로 부터 입력받을 것인지, 어디에 쓸 것인지를 나타내는 클래스.
  • 1 바이트 혹은 1 캐릭터 단위로 입력하거나, 바이트 배열 또는 캐릭터 배열 단위로 입출력한다.

입력하고 출력하는 메소드는 기능이 단순하게 제공되기 때문에 좀 더 특별한 방법으로 입력과 출력을 하고 싶다면, 위 추상 메소드 4개를 받아들이는 I/O 클래스를 이용해야 한다.

그것은 바로! 아래 장식 대상 클래스라고 불리는 것들이다.

"파일" 입력/쓰기 클래스

  • FileInputStream
  • FileOutputStream
  • FileReader
  • FileWriter

"배열" 입력/쓰기 클래스

  • ByteArrayInputStream
  • ByteArrayOutputStream
  • CharReader
  • CharWriter

위 I/O 클래스들은 "어디로부터 입력받을 것인지, 어디에 쓸 것인지"라는 대상을 지정할 수 있다.

장식대상 클래스

특히 DataInputStream, DataOutputStream 같은 클래스는 다양한 데이터 형을 입력받고 출력하는데,

PrintWriter는 한줄을 출력하는 println()메소드를 가지고 있으며, BufferedReader는 한 줄 입력받는 readLine() 메소드를 가지고 있다.

이렇게 다양한 방식으로 입력하고, 출력하는 기능을 제공 하는 클래스를 "장식하는 것처럼 생성자에 감싸서 새로운 기능을 계속 추가할 수 있도록 한다."고 해서 장식대상 클래스라고 부른다.

profile
안드로이드 개발자

0개의 댓글