Java调用Dos批处理时出现的问题

来源:互联网 发布:旋转矩阵公式 编辑:程序博客网 时间:2024/05/29 02:40

用Java调用Dos命令时直接用以下命令就可以完成:

String command="ping 192.168.1.1";
Runtime.getRuntime().exec(command); 

并可以使用Process类的getInputStream()方法获取输出结果,但是,我在调用一些工具软件的Dos命令时却出现了问题,输出结果只能取到前面一小部分,经测试发现,exec(command)之后没多久,Java就认为这个进程结束了,并立即开始执行下面的操作,但这时command实际上并没有结束,但由于流的关闭而被迫中断。

后来用了同事介绍的方法,将这些Dos命令全部放在一个批处理文件当中,并用String command="cmd /c start d://wmv.bat"的方法来调用(如果不加cmd /c的话,执行同样会出错),这样一来,Java只是新起了一个进程去执行批处理,并不会去管进程是否结束,而是直接开始执行下面的语句。

但这样还是有一个问题,就是Java和这个批处理没法进行交互,我试过了Process中的existValue()及waitFor()方法(都是网上说可用来判断进程是否结束的方法),但都起不到作用,往往是进程已经结束了,但Java还认为没结束,或者干脆是Java认为结束了,但进程却实际还在运行着。

原创粉丝点击