请问,java调用外部程序是怎么传参数?谢谢……

解决方案 »

  1.   

    外部程序?比如?
    如果是cmd 的话cmd /c  dir c:
    作为命令传过去notepad.exe  c:/t.txt
      

  2.   

     try   
      {   
      Process   proc   =   Runtime.getRuntime().exec("***");   
      int   i   =   proc.waitFor();   
      System.out.println(i);   
      }catch(Exception   e){   ...   }   
      ...   
      

  3.   

     String path = "C:/报表_20040504.xls";
      try {
      //相当于window的"开始"->"运行"的效果
         Runtime.getRuntime().exec("cmd /c start " + path); 
      } catch (IOException e) {
         e.printStackTrace();
      }
    try ...{
          //just for window
          String[] command = new String[] ...{"cmd.exe", "/c",  "copy", filePath, "FSOBACK"};
          Process p = Runtime.getRuntime().exec(command);
          p.waitFor();
        }
        catch(Exception ex) ...{
          ex.printStackTrace();
        } 
        Runtime.getRuntime().exec()中的参数,可是一个命令的字符串,如:"cmd.exe /c copy c:\\aaa.txt d:\bbb.txt"
        如果是执行一个单独的程序,不带参数,可以 "haha.exe",同样,执行带参数的命令不能直接写命令。而要把程序也写上,如cmd.exe     如果有多个参数也可以写到一个数组中。要注意cmd.exe 与 /c 要当成两个参数来写,而不能写成:
         new String[] {"cmd.exe /c",  "copy", filePath, "FSOBACK"};     Runtime执行时,被执行的程序相当于子进程。可以返回子进程Process对象
         p.waitFor()是指子进程执行完成后,再执行后面的程序。比如把文件copy到别处,再重写文件,如果不用waitFor(),不有可能文件还没有拷贝就已经更新了。拷贝的是更新过的文件。而不能达到备份的效果。 
      

  4.   

    不行啊,我这里要传参的是通过java调用外部的一个报表,然后要从中传参,应该怎么做?谢谢!
      

  5.   

    关键是看你的那个报表程序是怎么用cmd打开的,如果能通过命令行的方式,传参数给报表,那就runtime才能做到穿参
      

  6.   

    意思就是,用java写的一个程序涉及到报表,而java自己没有什么好的报表,所以就从网上下载一个方便的报表,然后,java程序去调用它。
    现在已经实现了,逐步传参,就可以的。呵呵……谢谢啦!