2013-11-02 4 views
0

Я изучаю классы BufferedReader, Scanner и InputStreamReader и их различия, и я понимаю цель каждого из них. Мне нужно объяснение, чтобы прояснить одно: какова цель передачи BufferedReader в конструкторе Scanner? Какова конкретная причина для этого? Ниже приведен пример, на который я ссылаюсь.BufferedReader в конструкторе сканера

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

ответ

2

Буферизованный считыватель создаст буфер. Это должно привести к более быстрому чтению из файла. Зачем? Поскольку буфер заполняется содержимым файла. Таким образом, вы помещаете большую часть файла в ОЗУ (если вы имеете дело с небольшими файлами, буфер может содержать весь файл). Теперь, если сканер хочет прочитать два байта, он может читать два байта из буфера вместо того, чтобы запрашивать два байта на жестком диске.

Вообще говоря, гораздо быстрее читать 10 раз 4096 байт вместо 4096 раз 10 байт.

+0

Плюс один, отметив, что это загружается в оперативную память. Я полагаю, это означает, что BufferedReader не имеет никакой пользы, если файл уже находится в ОЗУ. И.Е. файл загружается пользователем на веб-страницу, и вы должны проанализировать этот файл перед сохранением его на диске. Это верно? – TigerBear

Смежные вопросы