Оба предыдущих ответа частично верны, но частично вводят в заблуждение.
Использование следующего синтаксиса ...
java ReadInput < input.txt
... фактическая команда, которая выполняетсядвоичный файл Java:
java ReadInput
Оболочка операционной системы интерпретирует знак <
и отправляет содержимое файла input.txt в стандартный поток ввода(System.in).
При вызове System.in.readLine()
код проверяет, доступна ли строка ввода из стандартного потока ввода.Когда вы передаете файл по каналу, это означает, что он занимает следующую строку файла (как если бы ОС брала содержимое файла и вводила его по запросу).Когда вы запускаете программу без передачи файла, она будет ждать, пока вы, пользователь, не предоставите ей строку ввода из оболочки и не нажмете клавишу возврата.
Аргументы командной строки для JVM работают по-другомуи не используйте стандартный поток ввода (System.in).Пример:
java ReadInput "Input number one" "Input number two"
В этом случае вы передаете два аргумента командной строки.Эти свойства будут доступны через массив args
:
public static void main(String[] args) throws IOException {
System.out.println(args.length); //3
System.out.println(args[0]); //"ReadInput"
System.out.println(args[1]); //"Input number one"
System.out.println(args[2]); //"Input number two"
}
С предоставленным вами кодом программа завершится, когда в результате вызова readLine () вернется null
.Я полагаю Вы можете просто нажать клавишу ввода в приглашении, чтобы отправить пустую строку, и завершить программу.Если нет, вам, возможно, придется исправить программу, чтобы проверить наличие пустой строки (input.readLine (). Equals ("")).
Надеюсь, это поможет.