java运行cmd命令后获取返回信息的问题!看一下代码!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java运行cmd命令后获取返回信息的问题!看一下代码!相关的知识,希望对你有一定的参考价值。

import java.io.BufferedReader;import java.io.InputStreamReader;public class Main public static void main(String[] args) BufferedReader br = null; try Process p = Runtime.getRuntime().exec("c:\\windows\\audio\\ffmpeg -i c:\\windows\\audio\\1001.wav"); // Process p = Runtime.getRuntime().exec("dasdsads"); StringBuffer sbOut = new StringBuffer(1000); br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; while ((line = br.readLine()) != null) System.out.println(line); catch (Exception e) e.printStackTrace(); finally if (br != null) try br.close(); catch (Exception e) e.printStackTrace();

代码是这样!!如果运行 ipconfig 之类的东西 可以获取返回的信息
不过我运行这个命令就获取不到返回的信息了,不过自己输入这个命令 就有输出结果的啊!

我自己在命令符输入命令 就有返回信息!怎么回事?为什么获取不到呢?

你是用p.getInputStream()获取调用程序的输出流的,这是正常信息的获取方法,还有异常信息的输出流,要用p.getErrorStream(),不过如果你要"同时"读取两个流的信息并显示出来,单线程肯定是不行的,要采用多线程的方式 参考技术A BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));

如果没错的话,是因为你只读取了标准输出。而看你的截图应该同时读取错误输出。

抱歉我没有 ffmpeg 你先自己试一下。

参考技术B 想问下楼主最后怎么解决的,谢谢,能贴上代码吗? 参考技术C 加上这个process.waitFor( );

python cmd命令调用

关于python调用cmd命令:

主要介绍两种方式:

1.python的OS模块。

  OS模块调用CMD命令有两种方式:os.popen(),os.system(). 都是用当前进程来调用。

  os.system是无法获取返回值的。当运行结束后接着往下面执行程序。用法如:OS.system("ipconfig").

  OS.popen带返回值的,如何获取返回值。如

  p=os.popen(cmd)

  print p.read().得到的是个字符串。

  这两个都是用当前进程来调用,也就是说它们都是阻塞式的。

2.管道subprocess模块。

  运行原理会在当前进程下面产生子进程。

  sub=subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE)

  sub.wait()

  print sub.read()

以上是关于java运行cmd命令后获取返回信息的问题!看一下代码!的主要内容,如果未能解决你的问题,请参考以下文章

java 如何输入CMD命令?

Java代码调用cmd中的ping命令.如何获得ping返回的信息?

java 调用cmd命令 怎么获取cmd返回的errorlevel

python执行系统命令的四种方式

cmd命令怎么获取某个具体的进程pid?

java运行linux命令获得返回值的问题