Java: получить ввод с клавиатуры после чтения файла из стандартного ввода
У меня есть Java-программа, которая должна читать файл stdin
а затем он должен запросить ввод пользователя с клавиатуры.
Как показано ниже, сначала я прочитал файл с помощью Scanner
тогда я использую System.console()
* чтобы получить ввод пользователя.
Проблема в том, что после прочтения введенного канала я получаю NullPointerException
предположительно потому что console.readLine()
попадает в EOF:
cat input.txt | java -jar test.jar
Exception in thread "main" java.lang.NullPointerException at test.Main.main(Main.java:16)
Как я могу "восстановить" чтение из stdin
после того как я исчерпал трубу?
Это должно воспроизвести проблему:
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
while(sc.hasNextLine()) {
sc.nextLine();
}
Console console = System.console();
String input = console.readLine("What's next? ");
}
}
- На самом деле я не использую
System.console()
но Jline2ConsoleReader console= new ConsoleReader()
и я получаю ту же проблему.