InputStreamReader или Консоль для ввода-вывода Java

Чтобы получить пользовательский ввод в Java, какой метод лучше?

reader = new BufferedReader(new InputStreamReader(System.in));

или с помощью консоли -> Console c = System.console();

в чем разница между двумя и какой из них будет использоваться. Или есть какой-нибудь другой лучший метод, кроме этих двух?

4 ответа

Решение

Консоль была недавно введена в Java (Java 6) для упрощения чтения и записи в командной строке. Поэтому я бы использовал Консоль.

Я предлагаю вам класс Scanner, чтобы получить пользовательский ввод с консоли

Scanner in = new Scanner(System.in);

in.next();
int i = in.nextInt();
float f = in.nextFloat();
double d = in.nextDouble();    
String s = in.nextLine();

и другие красивые методы

но между этими двумя я рекомендую вам консоль

Они в значительной степени одинаковы, однако в консоли есть дополнительные методы для безопасного чтения информации от пользователя (например, пароля) и возвращает более интуитивный результат для того, поддерживает ли базовая платформа операции консоли или запущена в неинтерактивном режиме. среда

ИМХО они совершенно разные. Как говорит доктор:

Методы для доступа к символьному консольному устройству, если таковое имеется, связанному с текущей виртуальной машиной Java.

Таким образом, реализация зависит от ОС и не зависит от платформы (может быть или нет).

С Consol даже вы не можете читать со стандартного ввода:

echo 123 | java Test

Если Test использует консоль, он не будет работать. Таким образом, пользователь ДОЛЖЕН предоставить данные с консоли.

Другие вопросы по тегам