我试图在intellij中运行powershell命令(从打印机获取状态),但由于某些原因,它不能从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);
}
答案 0 :(得分:0)
IOUtils.toString一直等到InputStream终止,但这不会发生,因为InputStream一直等到程序终止,并且在下一行发生。获得所需内容的最佳方法是逐行读取InputStream。 (也许使用BufferedReader see)