자바의 입출력 관련 클래스를 사용하다 보면 가끔은 바이트 스트림으로 사용하다가
캐릭터스트림으로 사용해야하는 경우가 있습니다.두개의 스트림은 태어날 때부터 신분이
다르기 때문에 자기들끼리 함부로 변경될 수는 없지만 InputStreamReader,
OutputStreamWriter등을 통해서 InputStream에서 Reader를 구해낼 수는 있습니다.
import java.io.*;
import java.net.*;
public class InputStreamToReader {
public static void main(String[] args) throws IOException {
InputStream is = new FileInputStream("zzangnara.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String s = "";
while((s = br.readLine()) != null) {
System.out.println(s);
}
is.close();
br.close();
}
}
예제 6 - 11 InputStreamToReader.java
InputStream 메소드에는 스트림으로부터 한줄씩 읽어 들이는 메소드가 없습니다.
만약 여러분이 스트림으로부터 한줄씩 읽어들여야 하는 경우는 BufferedReader
클래스에 정의되어 있는 readLine()이라는 메소드를 사용하고 싶으실 겁니다.
하지만 BufferedReader는 캐릭터 스트림이고 InputStream은 바이트 스트림이므로
InputStream is = new FileInputStream(“zzangnara.txt”);
BufferedReader br =new BufferedReader(is);
예제 6 - 12
예제 6 - 12처럼 할 수는 없습니다.
BufferedReader의 경우는 생성자에 캐릭터스트림을 의미하는 Reader만 인자를 가지기
때문이지요. 이런경우 InputStream을 Reader로 변경해 주는 클래스가 있는데
InputStreamReader 라는 클래스입니다. 생성자에 InputStream을 인자로 받으면
InputStream을 Wrapping하여 Reader를 만들게 됩니다.
즉 예제 6 - 12처럼은 못하지만 예제 6 - 11에서 처럼은 할 수 있다는 것이지요.
InputStream is = new FileInputStream("zzangnara.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(is));
그림 6 - 10 [run InputStreamToReader]
'자바 Basic > 입출력(I/O)' 카테고리의 다른 글
자바공부-12.표준 입출력 (0) | 2007.12.11 |
---|---|
자바공부-10.기능성 읽고,쓰기 (0) | 2007.12.11 |
자바공부-9.자유로운 쓰기 (0) | 2007.12.11 |
자바공부-8.파일에서 읽고 쓰기 (0) | 2007.12.11 |
자바공부-7.메모리에서 읽고쓰기 (0) | 2007.12.11 |