스트림
스트림
-
바이트 기반 스트림 -> 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보낼 수 있다
-
바이트 기반 스트림 최상 클래스 -> 입력 InputStream, 출력 OutputStream
-
문자 기반 스트림 -> 오로지 문자만 받고 보낼 수 있도록 특화되어 있다
-
문자 기반 스트림 최상 클래스 -> 입력 Reader, 출력 Writer
입력 스트림
- 프로그램이 데이터를 입력 받을 때에는 입력 스트림
- 입력 스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램
출력 스트림
- 프로그램이 데이터를 보낼 때에는 출력 스트림
- 출력 스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램
InputStream
-
바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스이다
-
FileInputStream, BufferedInputStream, DataInputStream 클래스 모두 InputStream 클래스를 상속하고 있다
-
read() 메소드
1 바이트를 읽고 4 바이트 int 타입을 리턴한다
4 바이트 중 끝의 1 바이트에만 데이터가 들어 있다
만약 입력 스트림으로부터 바이트를 읽을 수 없다고 read() 메소드는 -1을 리턴한다
마지막 바이트까지 루프를 돌며 한 바이트씩 읽을 수 있다
InputStream is = new FileInputStream("C:/test.jpg"); int readByte; while ((readByte = is.read()) != -1) {...}
-
close() 메소드
is.close();
OutputStream
-
바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스이다
-
FileOutputStream, PrintStream BufferedOutputStream, DataOutputStream 클래스 모두 OutputStream 클래스를 상속하고 있다
-
write() 메소드
매개 변수로 주어진 int 값에서 끝에 있는 1바이트만 출력 스트림으로 보낸다
OutputStream os = new FileOutputStream("C:/test.txt"); byte[] data = "ABC".getBytes(); for(int i=0; i<data.length; i++) { os.write(data[i]); // "A", "B", "C"를 하나씩 출력 }
-
flush()와 close() 메소드
출력 스트림은 내부에 작은 버퍼가 있어서 데이터가 출력되기 전에 버퍼가 쌓여있다가 순서대로 출력
flush() 메소드는 버퍼에 잔류하고 있는 데이터를 모두 출력시키고 버퍼를 비우는 역할
Reader
- 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스이다
- FileReader, BufferedReader, InputStreamReader 클래스 모두 Reader 클래스를 상속하고 있다
Writer
- 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스이다
- FileWriter, BufferedWriter, PrintWriter, OutputStreamWriter 클래스 모두 Writer 클래스를 상속하고 있다
댓글남기기