BufferedReader vs Console vs Scanner
Привет, я новичок в Java
, и я хотел бы знать, что является лучшим выбором для чтения пользователя. Вход в консоль, насколько я знаю, есть 3 способа сделать это:
-
Console console = System.console();
-
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
-
Scanner reader = new Scanner(System.in);
Какой из них выбрать? Почему этот, а не другие?
Ответы
Ответ 1
BufferedReader
- Так как Java 1.1
- Выбрасывает проверенные исключения
- Может читать символы, char массивы и строки
- Fast
Сканер
- Так как Java 1.5
- Не выбрасывает проверенные исключения
- Может читать строки, маркеры с разделителями в виде пробелов, токены с разделителями и номерами
- Сложно читать отдельные символы
Консоль
- Так как Java 1.6
- Не выбрасывает проверенные исключения
- Можно читать строки
- Базовый читатель может читать символы и char массивы (останавливается при линейных границах)
- Не всегда доступно (например, Eclipse)
- Может читать пароли (т.е. читать без отображения символов)
Рекомендация: Сканер
Методы чтения чисел очень полезны. Исключения не отмечены, поэтому вам не нужно писать блоки try/catch для шаблонов.
Ответ 2
рядом с ними вы также можете использовать datainputstream и т.д.
Now BufferedReader Прочитайте текст из потока ввода символов, буферизируя символы, чтобы обеспечить эффективное считывание символов, массивов и строк. Можно указать размер буфера или использовать размер по умолчанию. Значение по умолчанию достаточно велико для большинства целей.
Сканер представляет собой простой текстовый сканер, который может анализировать примитивные типы и строки с использованием регулярных выражений. Сканер разбивает свой ввод на токены, используя шаблон разделителя, который по умолчанию соответствует пробелу. Затем полученные маркеры могут быть преобразованы в значения разных типов с использованием различных следующих методов. Сканер используется для разбора токенов из содержимого потока, в то время как BufferedReader просто считывает поток и не выполняет специальный синтаксический анализ.
также проверьте приведенную ниже ссылку, это наверняка поможет вам.
http://www.javawebtips.com/50474/
Ответ 3
Класс консоли пытается реализовать независимый от платформы способ обработки с помощью ввода в консоль. У всех ОС есть консоль в любом случае, но они все равно различны в реализации. Таким образом, класс Console предоставляет Java-платформу независимого класса времени выполнения для доступа к таким словам, как ввод пароля и т.д.
Сканер используется для разбора токенов из содержимого потока, в то время как BufferedReader просто считывает поток и не выполняет специальный синтаксический анализ.