日期:2014-05-20  浏览次数:20705 次

java调用console程序的问题
我用如下代码调用一个console程序netport.exe 该程序搜索本地网口并提示用户选择一个网口,之后执行操作。netport.exe的源程序已经找不到了所以只能用java调用,但是在运行完下面的java代码后,命令行并没有提示用户输入输入网口编号,也就是netport.exe没有按照预想的方式运行。请问下这是怎么回事?
public class transferExe {  
  
  public static void main(String[] args) {  
   
  openMyExe();  
  }  
   
   
   
  // 2.0调用其他的可执行文件,例如:自己制作的exe,或是下载安装的软件  
  public static void openMyExe() {  
  Runtime rn = Runtime.getRuntime();  
  Process p = null;  
  try {  
  //p = rn.exec("\"../netport.exe\"");  

  p = rn.exec("../netport.exe");  
  } catch (Exception e) {  
  System.out.println("Error my exec ");  
  }  
  }  
}

------解决方案--------------------
该运行程序完全是隐藏在后台的,如果你还需要该程序能跟用户进行交互,你需要处理Runtime的输入输出。

rn.getOutputStream() 这个可以获得该程序的输入,相当于模拟console发送信息给程序;
rn.getInputStream() 这个可以获得该程序的输出,相当于得到程序显示在console上的内容。

不太容易,建议Google下样例。