新聞中心
通過(guò)java.lang.Runtime 類可以方便的調(diào)用操作系統(tǒng)命令,或者一個(gè)可執(zhí)行程序,下面的小例子我在windows和linux分別測(cè)試過(guò),都通過(guò)?;驹硎牵紫韧ㄟ^(guò) Runtime.getRuntime() 返回與當(dāng)前Java 應(yīng)用程序相關(guān)的運(yùn)行時(shí)對(duì)象,然后調(diào)用run.exec(cmd) 另啟一個(gè)進(jìn)程來(lái)執(zhí)行命令(cmd為要執(zhí)行的命令)。

十年的鳳陽(yáng)網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整鳳陽(yáng)建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)公司從事“鳳陽(yáng)網(wǎng)站設(shè)計(jì)”,“鳳陽(yáng)網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
一、JAVA調(diào)用可執(zhí)行程序
執(zhí)行一個(gè).exe的文件,或通過(guò)已安裝的軟件打開(kāi)一個(gè)特定格式的文件,如word、chm或mp3等等。
1. 在window下可以直接執(zhí)行一個(gè).exe文件,如執(zhí)行我在F盤下的tomcat安裝文件,將命令寫為:
- String cmd = "F:\\apache-tomcat-6.0.20.exe";
2. 打開(kāi)一個(gè)word文檔。如果系統(tǒng)已經(jīng)安裝了office應(yīng)用程序,就可以通過(guò)調(diào)用word的可執(zhí)行程序來(lái)打開(kāi)一個(gè)word文檔:
- String cmd = "D:\\Program Files\\Microsoft Office\\OFFICE11\\WINWORD.EXE F:\\test.doc";
當(dāng)然這樣寫有點(diǎn)麻煩,我們想打開(kāi)一個(gè)word文檔時(shí)只要雙擊就可以了,用不著去找WINWORD.EXE。要是打開(kāi)每一種格式的文件都得去找它的可執(zhí)行程序,那可累死了,我們可以通過(guò)下面的代碼,打開(kāi)任意一個(gè)已知格式的文件(只要安裝的打開(kāi)這種文件格式的軟件),相當(dāng)于用鼠標(biāo)雙擊一個(gè)文件的圖標(biāo):
- String cmd = "cmd.exe /c start F:\\test.doc";
我用C寫了一個(gè)進(jìn)程操作的小例子,放在 linux 下編譯出的可執(zhí)行文件叫“fork_wait”,然后把我的java文件編譯成TestRunTime.class后扔到 linux 上,在控制臺(tái)執(zhí)行 java TestRunTime 命令,TestRunTime 和 fork_wait 程序均運(yùn)行成功。
- String cmd = "./fork_wait";
二、JAVA調(diào)用系統(tǒng)命令
通過(guò)調(diào)用進(jìn)程的 getInputStream() 方法,可以獲得執(zhí)行命令的標(biāo)準(zhǔn)輸出。在 windows 的cmd控制臺(tái)窗口和 linux 控制臺(tái)執(zhí)行系統(tǒng)名利的格式是一樣的,只是輸入的命令不同而已。
如要執(zhí)行windows控制臺(tái)中ping命令,可寫為:String cmd = "ping www.baidu.com";
執(zhí)行l(wèi)inux的ls命令,可寫為:String cmd = "ls -l";
如果要執(zhí)行一個(gè)帶參數(shù)的命令,可使用 String 數(shù)組形式,如:
- 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();//返回與當(dāng)前 Java 應(yīng)用程序相關(guān)的運(yùn)行時(shí)對(duì)象
- try {
- Process p = run.exec(cmd);// 啟動(dòng)另一個(gè)進(jìn)程來(lái)執(zhí)行命令
- BufferedInputStream in = new BufferedInputStream(p.getInputStream());
- BufferedReader inBr = new BufferedReader(new InputStreamReader(in));
- String lineStr;
- while ((lineStr = inBr.readLine()) != null)
- //獲得命令執(zhí)行后在控制臺(tái)的輸出信息
- System.out.println(lineStr);// 打印輸出信息
- //檢查命令是否執(zhí)行失敗。
- if (p.waitFor() != 0) {
- if (p.exitValue() == 1)//p.exitValue()==0表示正常結(jié)束,1:非正常結(jié)束
- System.err.println("命令執(zhí)行失敗!");
- }
- inBr.close();
- in.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
JAVA調(diào)用系統(tǒng)命令或可執(zhí)行程序的方法就給大家介紹到這里。
分享標(biāo)題:Java調(diào)用系統(tǒng)命令或可執(zhí)行程序的方法介紹
文章轉(zhuǎn)載:http://m.5511xx.com/article/djhiihh.html


咨詢
建站咨詢
