○스트림 : 데이터를 운반하는데 사용되는 연결통로
기반스트림 : 보조스트림의 부모가 되는 클래스
| 입력스트림 | 출력스트림 | 입출력 대상 종류 | 
| FileInputStream | FileOutputStream | 파일 | 
| ByteArrayInputStream | ByteArrayOutputStream | 메모리(byte배열) | 
| PipedInputStream | PipedOutputStream | 프로세스(프로세스간의 통신) | 
| AudioInputStream | AudioOutputStream | 오디오 장치 | 
○보조스트림
-주 스트림의 기능을 보완하기 위한 스트림
-실제 데이터를 주고받는 스트림은 아님
-스트림의 기능을 향상시키거나 새로운 기능을 추가
사용법 : 주 스트림을 먼저 생성한 다음 이를 이용하여 보조스트림 생성
ex)
1. 기반스트림 생성
FileInputStream fis = new FileInputStream("test.txt");
2. 보조스트림 생성
BufferedInputStream bis = new BufferedInputStream(fis);
3. 보조스트림 사용
bis.read();
종류
| 입력 | 출력 | 
 | 
| FilterInputStream | FilterOutputStream | 
 | 
| BufferedInputStream | BufferedOutputStream | 
 | 
| DataInputStream | DataOutputStream | 
 | 
| SequenceInputStream | SequenceOutputStream | 
 | 
| LineNumbreInputStream | 
 | 
 | 
| ObjectInputStram | ObjectOutputStream | 
 | 
| 
 | PrintStream | 
 | 
| PushbackInputStream | 
 | 
 | 
○문자기반 스트림
-바이트 기반 스트림은 1byte를 기반으로 하므로 java와 같이 문자가 2byte기반인 언어에서는 문자를 처리하는데 어려움이 있다. 문자데이터를 입출력 할 때는 문자기반 스트림을 사용하는 것이 유리하다.
바이트기반 스트림과 문자기반 스트림
| 바이트기반 스트림 | 문자기반 스트림 | 
| FileInputStream FileOutputStream | FileReader FileWriter | 
| ByteArrayInputStream ByteArrayOutputSTream | CharArrayReader CharArrayWriter | 
| PipedInputStream PipedOutputStream | PipedReader PipedWriter | 
| StringBufferInputStream(deprecated) StringBufferOutputStream(deprecated) | StringReader StringWriter | 
바이트기반 보조스트림과 문자기반 보조스트림
| 바이트기반 보조스트림 | 문자기반 보조스트림 | 
| BufferedInputStream BufferedOutputStream | BufferedReader BufferedWriter | 
| FilterInputStream FilterOutputStream | FilterReader FilterWriter | 
| LineNumberInputStream(deperecated) | LineNumberReader | 
| PrintStream | PrintWriter | 
| PushbackInputStream | PushbackReader | 






