java調(diào)用外部程序的方法及代碼演示
java調(diào)用外部程序的方法
在一個(gè)java應(yīng)用中,可能會(huì)遇到這樣的需求,就是需要調(diào)用一些外部的應(yīng)用做一些處理,比如調(diào)用excel,然后在繼續(xù)程序的運(yùn)行。
下面就開(kāi)始進(jìn)入java調(diào)用外部程序的一些演示,讓java應(yīng)用更加靈活。
1:最簡(jiǎn)單的演示:
Runtime.getRuntime().exec("notepad.exe");
記事本被打開(kāi)了是吧。
2:傳遞應(yīng)用程序的參數(shù):
Runtime runtime=Runtime.getRuntime(); String[] commandArgs={"notepad.exe","c:/boot.ini"}; runtime.exec(commandArgs);
現(xiàn)在不單單打開(kāi)了記事本,而且還裝載了boot.ini文件是吧。
現(xiàn)在已經(jīng)完全解決了調(diào)用外部程序的問(wèn)題,不是嗎,但是大家會(huì)發(fā)現(xiàn)exec方法是有返回值,那么繼續(xù)我們的演示吧。
1:Process的waitFor:
Runtime runtime=Runtime.getRuntime(); String[] commandArgs={"notepad.exe","c:/boot.ini"}; Process process=runtime.exec(commandArgs); int exitcode=process.waitFor(); System.out.println("finish:"+exitcode);
執(zhí)行上面的代碼以后發(fā)現(xiàn)不同的地方了嗎,waitFor會(huì)使線(xiàn)程阻塞,只有外部程序退出后才會(huì)執(zhí)行System.out.println("finish:"+exitcode);
這個(gè)功能很有用是吧,因?yàn)槎鄶?shù)時(shí)候你都需要等待用戶(hù)處理完外部程序以后才繼續(xù)你的java應(yīng)用。
2:Process的destroy:
Runtime runtime=Runtime.getRuntime(); String[] commandArgs={"notepad.exe","c:/boot.ini"}; final Process process=runtime.exec(commandArgs); new Thread(new Runnable(){ @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) {} process.destroy(); }}).start(); int exitcode=process.waitFor(); System.out.println("finish:"+exitcode);
這個(gè)演示稍微復(fù)雜了一些,如果你等待5秒,就會(huì)發(fā)現(xiàn)記事本自動(dòng)關(guān)閉了,是的,這個(gè)就是destroy方法的作用,強(qiáng)制關(guān)閉調(diào)用的外部程序。
不用我解釋了吧,這是非常有用的方法。
以上的部分已經(jīng)足夠你調(diào)用并控制你的外部應(yīng)用了。如果需要更詳細(xì)的信息,看javadoc文檔吧。
最后的說(shuō)明:ProcessBuilder這個(gè)1.5新增的類(lèi)也可以完成同樣的任務(wù),Runtime就是調(diào)用了這個(gè)類(lèi)。
到此這篇關(guān)于java調(diào)用外部程序的方法及代碼演示的文章就介紹到這了,更多相關(guān)java調(diào)用外部程序的方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java線(xiàn)程池中的工作線(xiàn)程Worker類(lèi)源碼解析
這篇文章主要介紹了Java線(xiàn)程池中的工作線(xiàn)程Worker類(lèi)源碼解析,線(xiàn)程池中的工作線(xiàn)程是通過(guò)內(nèi)部類(lèi)Worker表示的,Worker繼承自AbstractQueueSynchronizer,可以實(shí)現(xiàn)同步器的功能,需要的朋友可以參考下2023-12-12Java中位運(yùn)算(移位、位與、或、異或、非) 的簡(jiǎn)單實(shí)例
Java中位運(yùn)算(移位、位與、或、異或、非) 的簡(jiǎn)單實(shí)例,需要的朋友可以參考一下2013-02-02SpringBoot多環(huán)境配置及配置文件分類(lèi)實(shí)例詳解
這篇文章主要介紹了SpringBoot多環(huán)境配置及配置文件分類(lèi),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10MyBatis啟動(dòng)時(shí)控制臺(tái)無(wú)限輸出日志的原因及解決辦法
這篇文章主要介紹了MyBatis啟動(dòng)時(shí)控制臺(tái)無(wú)限輸出日志的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-07-07使用PageHelper插件實(shí)現(xiàn)Service層分頁(yè)
這篇文章主要為大家詳細(xì)介紹了使用PageHelper插件實(shí)現(xiàn)Service層分頁(yè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04基于SpringBoot?使用?Flink?收發(fā)Kafka消息的示例詳解
這篇文章主要介紹了基于SpringBoot?使用?Flink?收發(fā)Kafka消息,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01