java运行一个命令行程序后,如何能将命令行里的内容复制到java的某个容器(如JTextField等)中啊?又如何能在这个容器中继续(像在命令行里一样)完成其他命令行的操作啊?
我在网上查了下,有的人说要用到windows的api函数,请问如何实现啊,请具体说下!
还有,除了windows api外,还有没有其他的方法啊?
小弟在此先谢过了!

解决方案 »

  1.   

    Process pro=Runtime.getRuntime.exec("cmd name");
    InputStream is=pro.getInputStream();
      

  2.   

    好像不是很容易,java跨平台,调用Windows API就不跨平台了
      

  3.   


    哪里用得上WIN API啊。
    2楼正解。把Process的输出重定向到自己可控的InputStream,读取里面的内容,再翻写到Console。再从控制台读屏幕输入,
      

  4.   

    Runtime ce=Runtime.getRuntime(); 
    try {
    //Process pro=ce.exec("cmd /k ");
    Process pro1=ce.exec("cmd /c start D:\\programfile\\Snort\\bin\\snort.exe -v");
    InputStream is=pro1.getInputStream();
    OutputStream os=pro1.getOutputStream();
    byte[] b=new byte[100000];
    int i=is.read(b);

    System.out.print(new String(b));
    } catch (IOException e) {
    // TODO 自动生成 catch 块
    e.printStackTrace();

    这是我的代码,为何没有输出啊
      

  5.   


    public class DosConsole { /**
     * @param args
     */
    public static void main(String[] args) {
    BufferedReader console = new BufferedReader(new InputStreamReader(
    System.in));
    try {
    String cmd = null;
    while ((cmd = console.readLine()) != null) {
    if ("".equals(cmd) || "exit".equals(cmd.toLowerCase())) {
    break;
    }
    Process pro = Runtime.getRuntime().exec(cmd);
    BufferedReader is = new BufferedReader(new InputStreamReader(
    pro.getInputStream()));
    String line = null;
    while ((line = is.readLine()) != null) {
    System.out.print(line+"\r\n");
    }
    System.out.println("OK");
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } }}
      

  6.   

    2楼正解 8楼也对
    只要exec正确执行 并且有输出 虽然一次read方法所读的字节数会因文尾或异常而中断 但应该还是能读到一些吧 试试exec("cmd /c dir");
      

  7.   


    public static void main(String[] args) throws IOException, InterruptedException {
    String ls_1; 
    //其中参数“/c”表示命令执行后关闭Dos立即关闭窗口。
    Process process = Runtime.getRuntime().exec("cmd /c dir c:"); 
    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream())); 
    while ( (ls_1=bufferedReader.readLine()) != null) 
    System.out.println(ls_1); 
    process.waitFor(); 
    }
    这是一个调用DOS的DIR的命令  输出到控制台
    改一下输出目标就可以
      

  8.   

    执行外部命令来的最直接,
    lz可以参考一下这里的文章-浅析Java执行外部命令的几个要点(1)
    -浅析Java执行外部命令的几个要点(2)
    -浅析Java执行外部命令的几个要点(3)
    -浅析Java执行外部命令的几个要点(4)
      

  9.   

    这个是正解,
    不但能调用WINDOWS的,在linux下还可以调linux的命令,前提是你的操作系统得支持这些命令
      

  10.   


    我是想java运行命令行程序后,把命令行里显示的数据读出后显示在Swing容器里(最好还能继续执行命令行操作)啊,如何实现啊?
    我是想把命令行里的读出后显示在Swing容器里啊,如何实现啊?