Не удается подключиться к принтеру из Java - PullRequest
0 голосов
/ 03 июня 2019

Я пытаюсь запустить команду powershell (получить статус от принтера) в intellij, но по некоторым причинам она не запускается из Java.Программа не выдает ошибку и просто задерживается.Может быть, у меня нет доступа, но я не знаю, какой.

В CMD эта команда работает правильно.

public static void main(String[] args) {
        String printerName = "HP LaserJet 1022n";
        ProcessBuilder builder = new ProcessBuilder("powershell.exe", "get-wmiobject -class win32_printer | Select-Object Name,Status | where {$_.Name -eq '" + printerName + "'}");
        String fullStatus = null;
        Process reg;
        builder.redirectErrorStream(true);
        try {
            reg = builder.start();
            fullStatus = IOUtils.toString(reg.getInputStream(), "UTF-8"); //in this moment program is delaying
            reg.destroy();
        } catch (IOException e1) {
            e1.printStackTrace();
        }

        System.out.print(fullStatus);
    }

1 Ответ

0 голосов
/ 03 июня 2019

IOUtils.toString ждет, пока не закончится InputStream, но этого не произойдет, потому что InputStream ожидает, пока программа не завершится, и это произойдет в следующей строке. Вероятно, лучший способ получить то, что вы хотите, это читать InputStream построчно. (Возможно, используйте BufferedReader см. )

...