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() но Jline2 ConsoleReader console= new ConsoleReader() и я получаю ту же проблему.

0 ответов

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