Каковы последствия эффективности использования BufferedReader? - PullRequest
4 голосов
/ 13 августа 2011

В чем разница между этими двумя методами, используемыми для чтения символов из файла.

ПЕРВОЕ

FileReader fr = new FileReader( new File( "file.txt") );
int x = 0;
while( ( x = fr.read() ) != -1 ) {
    System.out.println( (char) x );
}

ВТОРОЙ

BufferedReader bfr = new BufferedReader( new FileReader( new File( "file.txt") ) );
int x = 0;
while( ( x = bfr.read() ) != -1 ) {
    System.out.println( (char) x );
}

Оба кода читают символы из файла и записывают его в консоль.

Какой из методов эффективнее и почему? Или это одно и то же?

Ответы [ 3 ]

13 голосов
/ 13 августа 2011

Рассмотрим резервуар для воды в 5 км от вас. На каждое ведро воды нужно было проехать 5 км. Чтобы уменьшить ваши усилия, вы приносите небольшой резервуар и наполняете его один раз на 3-4 дня. Затем наполните ведра из небольшого резервуара для воды внутри вашего дома.

В приведенном выше примере резервуар для воды на расстоянии 5 км - это файл на жестком диске. Если вы используете устройство для чтения с пустыми данными, это все равно что проехать 5 км на каждое ведро воды. Таким образом, вы приносите небольшой танк (BufferedReader).

9 голосов
/ 13 августа 2011

Таким образом, передаются документы :

В общем, каждый запрос чтения, сделанный устройством чтения, вызывает выполнение соответствующего запроса чтения базового символа или потока байтов.Поэтому желательно обернуть BufferedReader вокруг любого Reader, чьи операции read () могут быть дорогостоящими, например FileReaders и InputStreamReaders.

0 голосов
/ 13 августа 2011

Просто небольшое дополнение к ответу @ cwallenpoole.Также есть разница в интерфейсе.Например, в BufferedReader есть хороший метод readLine (), который я интенсивно использую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...