1.项目需求
需要在后端调用其他程序并且获取返回结果
2.第一个版本环境:Windows
//cmdstr为命令参数
public boolean excuteCmd(String cmdstr) {
String[] cmd = new String[]{
"cmd.exe", "/C", cmdstr};
BufferedReader br = null;
String line = null;
Runtime runtime = Runtime.getRuntime();
try {
Process pro = runtime.exec(cmd);
StringBuffer sbOut = new StringBuffer(1000);
br = new BufferedReader(new InputStreamReader(pro.getInputStream()));
if((line = br.readLine()) != null){
String[] sourceStrArray=line.split(":");
System.out.println(sourceStrArray[0]+"="+sourceStrArray[1]);
if(sourceStrArray[0].equals("Status")&&sourceStrArray[1].equals("SUCCESS")){
return true;
}else{
return false;
}
}
return false;
} catch (Exception e) {
System.out.println("Excute Error:" + e);
return false;
}
}
3.第二个版本环境:Linux
参考博客:http://www.linuxidc.com/Linux/2012-04/58416.htm
public class LinuxStart {
static String jarFile="java -jar /home/ictuser/test_Linux/HelloWorld.jar";
static String[] cmd1 = { "sh", "-c", jarFile };
String[] cmd2 = { "sh", "-c", "lsmod |grep linuxVmux" };
public static void main(String[] args) {
// TODO Auto-generated method stub
doCmd();
}
public static void doCmd(){
StringBuffer buf = new StringBuffer(1000);
String rt="-1";
try {
Process pos = Runtime.getRuntime().exec(cmd1);
InputStreamReader ir = new InputStreamReader(pos.getInputStream());
LineNumberReader input = new LineNumberReader(ir);
String ln="";
while ((ln =input.readLine()) != null) {
buf.append(ln+"
");
System.out.println(ln);
}
rt = buf.toString();
input.close();
ir.close();
} catch (java.io.IOException e) {
rt=e.toString();
}catch (Exception e) {
System.out.println(e.toString());
}
}
}