자바 IO 패키지의 I는 Input, O는 Output을 의미한다. 프로그램 동작 시 들어오는 모든 값을 Input Data 라고 하며파일, 네트워크, 콘솔 등 밖으로 나가는 모든 값을 Output Data라고 한다.결론은 IO는 입력과 출력에 대한 인터페이스드와 클래스들이다.
I/O는 크게 byte와 char(문자) 단위 입출력으로 나뉜다. 2개의 입출력 클래스는 모두 추상 클래스를 상속받아 만들어지는데, 그 종류는 각기 아래와 같다.
InputStream
OutputStream
Reader
Writer
입력하고 출력하는 메소드는 기능이 단순하게 제공되기 때문에 좀 더 특별한 방법으로 입력과 출력을 하고 싶다면, 위 추상 메소드 4개를 받아들이는 I/O 클래스를 이용해야 한다.
그것은 바로! 아래 장식 대상 클래스라고 불리는 것들이다.
위 I/O 클래스들은 "어디로부터 입력받을 것인지, 어디에 쓸 것인지"라는 대상을 지정할 수 있다.
특히 DataInputStream, DataOutputStream 같은 클래스는 다양한 데이터 형을 입력받고 출력하는데,
PrintWriter는 한줄을 출력하는 println()메소드를 가지고 있으며, BufferedReader는 한 줄 입력받는 readLine() 메소드를 가지고 있다.
이렇게 다양한 방식으로 입력하고, 출력하는 기능을 제공 하는 클래스를 "장식하는 것처럼 생성자에 감싸서 새로운 기능을 계속 추가할 수 있도록 한다."고 해서 장식대상 클래스라고 부른다.