. Input Output Stream(입출력 스트림)
: 입출력은 주로 메모리, 파일, 네트워크를 통헤 처리 됩니다.
일반적인 프로그램 언어에서 가장 어려운 것이 입출력 입니다.
자바의 입출력은 java.io패키지를 사용합니다. 자바는 입출력 처리를
위해 Stream이라는 개념을 사용합니다. 스트림은 영어 사전에서 시냇물이라는
뜻이지만 자바에서의 스트림은 데이터의 일반적인 흐름을 말합니다.
시냇물은 항상 한쪽으로 흘러가듯이 스트림도 항상 한쪽으로 데이터가 전송됩니다.
스트림은 문자(Character)와 바이트(Byte) 스트림으로 구성되어 있습니다.
문자 스트림은 16비트 문자열을 읽거나 쑬 때 사용합니다. 읽을 때는 Reader, 쓸 때는
Writer 클래스의 하위 클래스를 사용합니다. (메모장에서 볼 수 있는 거 read,write메모리..? 없는 거 바이트 메모리)
바이트 스트림은 데이터 (그림파일, 동영상, 음악파일, 응용 프로그램 파일)등을
읽을 때 InputStream 클래스의 하위 클래스를 쓸 때는 OutputStream의
하위 클래스를 사용합니다.
스트림은 데이터의 흐름입니다. 한 쪽 방향으로 이동하며, 먼저 발생한 스트림이
먼저 처리되고, 동시에 발생할 수 없습니다. 파일 입출력 스트림은 동일한 방식으로
메모리, 네트워크 입출력으로 변형될 수 있습니다.
Stream이란
: 입출력은 외부로부터 데이터를 입력받아 특정 장치에 기록하는 작업입니다.
키보드로 부터 입력 받아서 화면에 출력하는 작업, 파일로 부터 데이터를 읽어서 다시
파일에 쓰는 작업, 네트워크를 통해 데이터를 송수신하는 작업등이 해당합니다.
자바는 이러한 입출력을 스트림이라는 개념으로 처리합니다. 한쪽에서 보내준
입력 데이터를 다른 쪽으로 출력하는 데이터의 흐름이 스트림입니다.
파일 입출력에서 사용하는 파일과 스트림은 자아가 있습니다. 파일은 디스크 상의
파일을 포함하여 개개인의 물리적인 장치들을 총칭하는 말인데 스트림은 그 실제 장치들을
하나의 통일된 방식으로 다를 수 있도록 마련된
그 실제 장치들과는 독립적인 접속장치를 뜻합니다.
이와같은 추상적인 스트림을 이용해 디스크 상의 파일과
장치들을 논리적으로 동등하게 췩급하는 이유는 데이터 입출력에 상당한 융통성과
효율성을 주기 때문입니다.
Character Stream(문자 스트림)
: 자바의 스트림은 문자와 바이트 스트림으로 구분할 수 있습니다.
문자 스트림은 16빙트 단위로 바이트 스트림은 8비트 단위로 읽거나 쓸 수 있습니다.
윈도우에 있는 메모장에서 읽을 수 있으면 문자 스트림, 읽을 수 없으면
바이트 스트림입니다. 문자 스트림은16비트 유니코드 데이터를
입출력할 때 사용합니다.
Reader writer
| |
BefferedReader InputStreamReader BufferedWriter OutputStreamWriter PrintWriter
| |
FileReader FileWriter
Byte Stream(바이트 스트림)
: 바이트 스트림은 데이터를 8비트 단위로 읽거나 씁니다.
InputStream OutputStream
| |
FileInputStream FilterInputStream FileOutputStream FilterOutputStream
| |
BufferedInputStream DataInputStream BufferedOutputStream DataOutputStream PrintStream