2013-11-02 3 views
0

BufferedReader, Scanner 및 InputStreamReader 클래스와 그 차이점을 연구 중이며 각각의 목적을 이해하고 있습니다. 한 가지 명확한 설명이 필요합니다 : Scanner의 생성자에 BufferedReader를 전달하는 목적은 무엇입니까? 그렇게하는 구체적인 이유는 무엇입니까? 다음은 내가 언급 한 예입니다.Scanner 생성자의 BufferedReader

Scanner s = null; 
    try { 
     s = new Scanner(new BufferedReader(new FileReader("file...."))); 
      //more code here......... 

답변

2

BufferedReader가 버퍼를 만듭니다. 이렇게하면 파일을 더 빠르게 읽을 수 있습니다. 왜? 버퍼가 파일의 내용으로 채워지기 때문입니다. 그래서, 당신은 RAM에 파일의 더 큰 덩어리를 넣습니다 (작은 파일을 다루는 경우, 버퍼는 전체 파일을 포함 할 수 있습니다). 이제 스캐너가 2 바이트를 읽으려는 경우 하드 드라이브에 2 바이트를 요구하지 않고 버퍼에서 2 바이트를 읽을 수 있습니다.

일반적으로 4096 x 10 바이트 대신 4096 바이트의 10 배를 읽는 것이 훨씬 빠릅니다.

+0

RAM에로드됨을 나타내는 플러스 값입니다. 파일이 이미 RAM에 있으면 BufferedReader에 아무런 이점이 없다는 것을 의미한다고 생각합니다. I.E. 사용자가 웹 페이지에 파일을 업로드하고 디스크에 저장하기 전에이 파일을 구문 분석하려고합니다. 이 올바른지? – TigerBear