Вопрос: Каковы последствия эффективности использования BufferedReader?


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

ПЕРВЫЙ

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 );
}

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

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


4


источник


Ответы:


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

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


9



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

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


13



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


0