Java Process類的詳解及實(shí)例代碼
Java Process類的詳解
前言:
今天用了下Java.lang.Process類,只是初步的學(xué)習(xí),并沒(méi)有深入實(shí)踐,因?yàn)楦杏X(jué)它的用途并不是很大,偶爾才可能用上,如果要經(jīng)常使用它的人可以自行參考JDk文檔。
對(duì)Process類的簡(jiǎn)要說(shuō)明:
Process類是一個(gè)抽象類,方法都是抽象的,它封裝了一個(gè)進(jìn)程,也就是一個(gè)可執(zhí)行的程序 該類提供進(jìn)程的輸入、執(zhí)行輸出到進(jìn)程、等待進(jìn)程的完成和檢查進(jìn)程的退出狀態(tài)及銷毀進(jìn)程的方法
ProcessBuilder.start()和Runtime.exec方法創(chuàng)建一個(gè)本機(jī)進(jìn)程并返回Process子類的一個(gè)實(shí)例,該實(shí)例可以控制進(jìn)程并獲取相關(guān)的信息
其它的概要請(qǐng)參考JDK文檔
下面就開(kāi)始舉幾個(gè)簡(jiǎn)單的示例:
(1)執(zhí)行簡(jiǎn)單的DOS命令,如打開(kāi)一個(gè)記事本
package com.iwtxokhtd.other; import java.io.IOException; public class ProcessTest { public static void main(String[] args) { try { Process proc=Runtime.getRuntime().exec("notepad"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.iwtxokhtd.other; import java.io.IOException; public class ProcessTest { public static void main(String[] args) { try { Process proc=Runtime.getRuntime().exec("notepad"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
(2)使用它的其它構(gòu)造方法執(zhí)行相關(guān)的命令,如下例:
package com.iwtxokhtd.other; import java.io.IOException; public class ProcessTest { public static void main(String[] args) { try { String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE"; String message="www.google.com"; String []cmd={exeFullPathName,message}; Process proc=Runtime.getRuntime().exec(cmd); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
package com.iwtxokhtd.other; import java.io.IOException; public class ProcessTest { public static void main(String[] args) { try { String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE"; String message="www.google.com"; String []cmd={exeFullPathName,message}; Process proc=Runtime.getRuntime().exec(cmd); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
執(zhí)行上述命令可以打開(kāi)Google網(wǎng)站
(3)列出系統(tǒng)正在運(yùn)行的所有進(jìn)程信息
package com.iwtxokhtd.other; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ListAllProcessTest { //列出所有的進(jìn)程信息 public static void main(String[] args) { BufferedReader br=null; try { Process proc=Runtime.getRuntime().exec("tasklist"); br=new BufferedReader(new InputStreamReader(proc.getInputStream())); @SuppressWarnings("unused") String line=null; System.out.println("打印所有正在運(yùn)行的進(jìn)程信息"); while((line=br.readLine())!=null){ System.out.println(br.readLine()); } } catch (IOException e) { e.printStackTrace(); }finally{ if(br!=null){ try { br.close(); } catch (Exception e) { e.printStackTrace(); } } } } }
package com.iwtxokhtd.other; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ListAllProcessTest { //列出所有的進(jìn)程信息 public static void main(String[] args) { BufferedReader br=null; try { Process proc=Runtime.getRuntime().exec("tasklist"); br=new BufferedReader(new InputStreamReader(proc.getInputStream())); @SuppressWarnings("unused") String line=null; System.out.println("打印所有正在運(yùn)行的進(jìn)程信息"); while((line=br.readLine())!=null){ System.out.println(br.readLine()); } } catch (IOException e) { e.printStackTrace(); }finally{ if(br!=null){ try { br.close(); } catch (Exception e) { e.printStackTrace(); } } } } }
(4)判斷一個(gè)具體的進(jìn)程是否正在運(yùn)行,如下例:
package com.iwtxokhtd.other; import java.io.BufferedReader; import java.io.InputStreamReader; public class FindProcessExeTest { public static void main(String []args){ if(findProcess("QQ.exe")){ System.out.println("------判斷指定的進(jìn)程是否在運(yùn)行------"); System.out.println("QQ.exe該進(jìn)程正在運(yùn)行!"); }else{ System.out.println("------判斷指定的進(jìn)程是否在運(yùn)行------"); System.out.println("QQ.exe該進(jìn)程沒(méi)有在運(yùn)行!"); } } public static boolean findProcess(String processName){ BufferedReader br=null; try{ //下面這句是列出含有processName的進(jìn)程圖像名 Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/""); br=new BufferedReader(new InputStreamReader(proc.getInputStream())); String line=null; while((line=br.readLine())!=null){ //判斷指定的進(jìn)程是否在運(yùn)行 if(line.contains(processName)){ return true; } } return false; }catch(Exception e){ e.printStackTrace(); return false; }finally{ if(br!=null){ try{ br.close(); }catch(Exception ex){ } } } } }
package com.iwtxokhtd.other; import java.io.BufferedReader; import java.io.InputStreamReader; public class FindProcessExeTest { public static void main(String []args){ if(findProcess("QQ.exe")){ System.out.println("------判斷指定的進(jìn)程是否在運(yùn)行------"); System.out.println("QQ.exe該進(jìn)程正在運(yùn)行!"); }else{ System.out.println("------判斷指定的進(jìn)程是否在運(yùn)行------"); System.out.println("QQ.exe該進(jìn)程沒(méi)有在運(yùn)行!"); } } public static boolean findProcess(String processName){ BufferedReader br=null; try{ //下面這句是列出含有processName的進(jìn)程圖像名 Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/""); br=new BufferedReader(new InputStreamReader(proc.getInputStream())); String line=null; while((line=br.readLine())!=null){ //判斷指定的進(jìn)程是否在運(yùn)行 if(line.contains(processName)){ return true; } } return false; }catch(Exception e){ e.printStackTrace(); return false; }finally{ if(br!=null){ try{ br.close(); }catch(Exception ex){ } } } } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
java之Timer和TimerTask簡(jiǎn)單demo(分享)
下面小編就為大家?guī)?lái)一篇java之Timer和TimerTask簡(jiǎn)單demo(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12IDEA 2020 無(wú)法啟動(dòng)的解決辦法(啟動(dòng)崩盤(pán))附IDEA 2020 新功能
這篇文章主要介紹了IDEA 2020 無(wú)法啟動(dòng)的解決辦法(啟動(dòng)崩盤(pán))附IDEA 2020 新功能,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Spring啟動(dòng)流程refresh()源碼深入解析
這篇文章主要給大家介紹了關(guān)于Spring啟動(dòng)流程refresh()源碼深入解析的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09java微信企業(yè)號(hào)開(kāi)發(fā)之發(fā)送消息(文本、圖片、語(yǔ)音)
這篇文章主要為大家詳細(xì)介紹了java微信企業(yè)號(hào)開(kāi)發(fā)之發(fā)送消息,發(fā)送類型包括文本、圖片、語(yǔ)音,感興趣的小伙伴們可以參考一下2016-06-06Spring Security 和Apache Shiro你需要具備哪些條件
這篇文章主要介紹了Spring Security 和Apache Shiro你需要具備哪些條件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07使用純java config來(lái)配置spring mvc方式
這篇文章主要介紹了使用純java config來(lái)配置spring mvc方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java數(shù)組集合的深度復(fù)制代碼實(shí)例
這篇文章主要介紹了Java數(shù)組集合的深度復(fù)制代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11Java連接Mysql數(shù)據(jù)庫(kù)詳細(xì)代碼實(shí)例
這篇文章主要介紹了Java連接Mysql數(shù)據(jù)庫(kù)詳細(xì)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02