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 stubdoCmd();}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+"<br>"); 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()); }}}