2015-06-30 2 views
-1

Я хочу знать, как работает BufferedReader? Почему InputStreamReader используется с ним? Как он отличается от класса Scanner, который также используется для ввода пользователя? Какой из двух лучше?Как работает BufferedReader в java

+5

http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html и http://docs.oracle.com/javase/7/docs/api/java/io /InputStreamReader.html и http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html – EpicPandaForce

+2

Если вы хотите узнать; почему бы вам не попытаться это выяснить? Например, вы сами, сделав некоторые предварительные исследования, прежде чем приехать сюда и попросить других людей провести время ** учить ** вас. – GhostCat

+1

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что он не задает конкретного вопроса программирования и не демонстрирует базовый уровень усилий. – MarsAtomic

ответ

4

Основные отличия

  1. Сканер используется для разбора лексем из содержимого потока в то время как BufferedReader просто читает поток и не делать каких-либо специальный синтаксический. На самом деле вы можете передать BufferedReader на сканер в качестве источника символов для разбора.
  2. Другим отличием является размер буфера. В сканере имеется намного меньше буфер, чем BufferedReader (1024 символа в отличие от 8192 символов). Хотя это может показаться довольно заторным, буфер сканера больше, чем достаточно для большинства задач.
  3. Сканер также скрывает IOExceptions while BufferedReader бросает их немедленно, это дает преимущества и недостатки.
  4. И, наконец, BufferedReader синхронно, а сканер - нет. Используйте BufferedReader, если вы работаете с несколькими потоками.

Вы могли бы найти это очень легко, отправив его в Google.

Here's хорошее звено.

3

От Javadoc из BufferedReader

читает текст из символов входного потока, буферные символы таким образом, чтобы обеспечить эффективное чтение символов, массивов и строк.

От Javadoc из Scanner

Простой текстовый сканер, который может анализировать примитивные типы и строки с использованием регулярных выражений. Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу. Затем полученные маркеры могут быть преобразованы в значения разных типов с использованием различных следующих методов.

В основном BufferedReader читает эффективно символы.

Scanner Разделите последовательности символов в токенах (аналогично словам) и разрешите доступ к некоторым базовым типам (или классам) (например, int, long, byte, double, String ...). Это вспомогательный класс для анализа ввода, а не для его буферизации.

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