바이트 레벨이 아닌 텍스트 레벨에서 파일 (일부 charset으로 인코딩 됨)을 읽길 원한다고 가정 해 봅시다. 그래서 Reader
클래스가 필요합니다.Buffered reader와 InputStreams의 가능한 네 스팅
독서를 버퍼링하고 싶다고합시다. 적어도 3 가지 방법이 있습니다.
public static void main(String[] args) throws Exception {
BufferedReader r1 = new BufferedReader(new FileReader("foo.txt"));
BufferedReader r2 = new BufferedReader(new InputStreamReader(new FileInputStream("foo.txt")));
InputStreamReader r3 = new InputStreamReader(new BufferedInputStream(new FileInputStream("foo.txt")));
}
R1과 R2는 거의 동일 InputStreamReader
에서 FileReader
상속 이후이며, 실질적으로 그것의 기본 클래스에 InputStream
을 넣습니다. 이 경우 버퍼링은 바이트가 텍스트로 디코딩 된 후 문자 수준에서 수행됩니다.
그러나 세 번째 경우는 버퍼링이 바이트 읽기와 텍스트 디코딩 사이에서 발생하기 때문에 다소 다릅니다. 버퍼링은 바이트가 텍스트로 디코딩되기 전에 발생합니다.
Mu 질문은 중요한 차이점이 있습니까? 이러한 경우 사이에 어떤 차이가 있습니까? 하나의 옵션이 다른 것보다 더 나은 경우가 있습니까? FileReader
의