【发布时间】:2014-10-12 01:18:54
【问题描述】:
我正在尝试使用 Process InputStream 上的 BufferedReader 将 Psexec 的输出读入 Java,以便在网络上使用,但它只输出第一行。
Runtime rt = Runtime.getRuntime();
try {
Process p = rt.exec("C:\\Users\\*****\\Desktop\\PS\\Psexec \\\\" + "******" + " -u ****** -p ****** cmd /c dir D:\\");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
log.add("Computer: " + address);
String s = null;
while ((s = stdInput.readLine()) != null) {
log.add(s);
}
} catch (IOException e) {
e.printStackTrace();
}
发生这种情况的原因是什么?如何解决?
【问题讨论】:
-
尽量不要使用
BufferedReader,而是尝试从InputStream读取每个字符 -
@MadProgrammer 这不起作用,仍然打印出相同的数量。
-
那可能是 psexec 的错误,为什么不尝试自己进行 telnet 会话?
-
这可能是
Process无法读取进程的标准输出的时候之一,因为输出没有通过标准输出发送......
标签: java process bufferedreader psexec