经过 java.lang.Runtime 类能够方便的调用操做系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都经过。基本原理是,首先经过 Runtime.getRuntime() 返回与当前 Java 应用程序相关的运行时对象,而后调用run.exec(cmd) 另启一个进程来执行命令(cmd为要执行的命令)。 1、运行一个可执行程序 执行一个.exe的文件,或经过已安装的软件打开一个特定格式的文件,如word、chm或mp3等等。 1. 在window下能够直接执行一个.exe文件,如执行我在F盘下的tomcat安装文件,将命令写为: String cmd = "F:\\apache-tomcat-6.0.20.exe"; 2. 打开一个word文档。若是系统已经安装了office应用程序,就能够经过调用word的可执行程序来打开一个word文档: String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc"; 固然这样写有点麻烦,咱们想打开一个word文档时只要双击就能够了,用不着去找WINWORD.EXE。要是打开每一种格式的文件都得去找它的可执行程序,那可累死了,咱们能够经过下面的代码,打开任意一个已知格式的文件(只要安装的打开这种文件格式的软件),至关于用鼠标双击一个文件的图标: String cmd = "cmd.exe /c start F:\\test.doc"; 我用C写了一个进程操做的小例子,放在 linux 下编译出的可执行文件叫“fork_wait”,而后把个人java文件编译成TestRunTime.class后扔到 linux 上,在控制台执行 java TestRunTime 命令,TestRunTime 和 fork_wait 程序均运行成功。 String cmd = "./fork_wait"; 2、执行一个有标准输出的系统命令 经过调用进程的 getInputStream() 方法,能够得到执行命令的标准输出。在 windows 的cmd控制台窗口和 linux 控制台执行系统名利的格式是同样的,只是输入的命令不一样而已。 如要执行windows控制台中ping命令,可写为:String cmd = "ping www.baidu.com"; 执行linux的ls命令,可写为:String cmd = "ls -l"; 若是要执行一个带参数的命令,可以使用 String 数组形式,如: String[] cmd=new String[3]; cmd[0]="/bin/sh"; cmd[1]="-c"; cmd[2]="ls -l ./"; 下面是我写的小例子: Java代码 package com.why.RunTime; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.InputStreamReader; public class TestRunTime { public static void main(String[] args) { //windows // String cmd = "F:\\apache-tomcat-6.0.20.exe"; // String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc"; // String cmd = "cmd.exe /c start F:\\test.doc"; String cmd = "ping www.baidu.com"; //linux // String cmd = "./fork_wait"; // String cmd = "ls -l"; // String[] cmd=new String[3]; // cmd[0]="/bin/sh"; // cmd[1]="-c"; // cmd[2]="ls -l ./"; Runtime run = Runtime.getRuntime();//返回与当前 Java 应用程序相关的运行时对象 try { Process p = run.exec(cmd);// 启动另外一个进程来执行命令 BufferedInputStream in = new BufferedInputStream(p.getInputStream()); BufferedReader inBr = new BufferedReader(new InputStreamReader(in)); String lineStr; while ((lineStr = inBr.readLine()) != null) //得到命令执行后在控制台的输出信息 System.out.println(lineStr);// 打印输出信息 //检查命令是否执行失败。 if (p.waitFor() != 0) { if (p.exitValue() == 1)//p.exitValue()==0表示正常结束,1:非正常结束 System.err.println("命令执行失败!"); } inBr.close(); in.close(); } catch (Exception e) { e.printStackTrace(); } } }