返回信息流原本是在Java代码中嵌入了DOS命令,并截获命令输出的结果。但是遇到问题。
Process process = Runtime.getRuntime().exec("cmd /c java");
//Process process = Runtime.getRuntime().exec("cmd /c java -version");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ( (ls_1=bufferedReader.readLine()) != null)
System.out.println(ls_1);
process.waitFor();
结果:
exec("cmd /c java"); 可以截获dos下java命令的输出结果,非空exec("cmd /c java -version");截获dos下java -version命令的输出结果为空
紧接着我做了如下测试:DOS下重定向
cmd打开DOS窗口。分别输入以下两个重定向测试例子
java > /b.txt
java -version > /a.txt
奇怪的是,第一个执行完,不会再DOS窗口显示任何内容。在C:\b.txt中有内容。
第二个执行完,直接将结果输出在DOS窗口,在C:\a.txt中没有任何内容。
是不是java -version输出结果,不是标准输出??
哪位大牛能解释一下。
这是一条镜像帖。来源:北邮人论坛 / windows / #97137同步于 2009/6/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Windows机器人发帖
【提问】DOS下重定向
LoveAmethyst
2009/6/28镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
java输出的是错误输出
java -version是标准输出
这两个一般都是指向屏幕的
可以用2> 1>来分开这两个输出
java 2> /b.txt
java -version 2> /a.txt 试试这样呢