Java 读取进程的输出
我试图使用BufferedReader读取进程的输出。当我尝试Java 读取进程的输出,java,bufferedreader,runtime.exec,Java,Bufferedreader,Runtime.exec,我试图使用BufferedReader读取进程的输出。当我尝试 Process p=Runtime.getRuntime().exec("nslookup 10.123.30.130"); p.waitFor(); BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); String line=reader.readLine(); while(line!=null) {
Process p=Runtime.getRuntime().exec("nslookup 10.123.30.130");
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String line=reader.readLine();
while(line!=null)
{
System.out.println(line);
line=reader.readLine();
}
输出是
Server: <edited server details>
Address: <edited address details>
服务器:
地址:
而控制台中流程的实际输出为:
Server: <details edited>
Address: <details edited>
Name: <details edited>
Address: <details edited>
服务器:
地址:
姓名:
地址:
(注意:出于安全原因,我编辑了实际输出)
我的观察是,在读取前两行之后,返回null,因此流结束。有没有办法让我拿到全部四条线
更新:
第三个空行被解释为null。但是如果我为
processp=Runtime.getRuntime().exec(“cmd/cdir”)尝试相同的程序代码>我得到的输出与控制台中的输出完全相同,即使有新行。读取错误缓冲区
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String errorLine;
while( (errorLine = stdError.readLine()) != null ){
System.out.println(errorLine);
}
您将看到出现错误,nslookup无法解析您IP地址的域。使用主机名而不是IP地址 我以为你想读输出!P.GETOutPutsFrase:也许中间的空行被解释为NULL?1)通过链接并实现所有建议。这可能会解决眼前的问题,但也。。2) 使用ProcessBuilder
,使第(1)点和。。3) 以数组形式提供参数。例如,“nslookup”,“10.123.30.130”
。不要忘记读取错误流:p.getErrorStream()代码>