Получение вывода из команды cmd в Java - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь получить exe-файл, связанный с типом файла в Java. Я делаю это, запустив процесс cmd, который связывает, и пытаюсь захватить его вывод. Теперь, когда все идет не так, я получаю следующие строки, но ничего больше:

Microsoft Windows [Version 10.0.17134.648]
(c) 2018 Microsoft Corporation. All rights reserved.

Вот мой код:

        String[] commands = {"cmd", "assoc .txt"};
        final ProcessBuilder pb = new ProcessBuilder(commands);
        Process pr = pb.start();
        pr.getOutputStream().close();

        BufferedReader errorReader = new BufferedReader(new InputStreamReader(pr.getErrorStream()));

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(pr.getInputStream()));

        String s;
        while((s = stdIn.readLine()) != null) {
            System.out.println(s);
        }

        String error;
        while((error = errorReader.readLine()) != null) {
            System.out.println(error);
        }

1 Ответ

0 голосов
/ 11 апреля 2019

Ваша проблема может быть в том, что вы используете BufferedReader.readLine().Это ожидает прерывания строки, которое не может быть отправлено вашим процессом.Кроме того, вы запускаете все в одном потоке, что может помешать вашему выводу.Посмотрите на 3. на https://examples.javacodegeeks.com/core-java/lang/processbuilder/java-lang-processbuilder-example/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...