Java Process類的詳解及實例代碼
Java Process類的詳解
前言:
今天用了下Java.lang.Process類,只是初步的學(xué)習(xí),并沒有深入實踐,因為感覺它的用途并不是很大,偶爾才可能用上,如果要經(jīng)常使用它的人可以自行參考JDk文檔。
對Process類的簡要說明:
Process類是一個抽象類,方法都是抽象的,它封裝了一個進程,也就是一個可執(zhí)行的程序 該類提供進程的輸入、執(zhí)行輸出到進程、等待進程的完成和檢查進程的退出狀態(tài)及銷毀進程的方法
ProcessBuilder.start()和Runtime.exec方法創(chuàng)建一個本機進程并返回Process子類的一個實例,該實例可以控制進程并獲取相關(guān)的信息
其它的概要請參考JDK文檔
下面就開始舉幾個簡單的示例:
(1)執(zhí)行簡單的DOS命令,如打開一個記事本
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í)行上述命令可以打開Google網(wǎng)站
(3)列出系統(tǒng)正在運行的所有進程信息
package com.iwtxokhtd.other; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ListAllProcessTest { //列出所有的進程信息 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("打印所有正在運行的進程信息"); 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 { //列出所有的進程信息 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("打印所有正在運行的進程信息"); 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)判斷一個具體的進程是否正在運行,如下例:
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("------判斷指定的進程是否在運行------"); System.out.println("QQ.exe該進程正在運行!"); }else{ System.out.println("------判斷指定的進程是否在運行------"); System.out.println("QQ.exe該進程沒有在運行!"); } } public static boolean findProcess(String processName){ BufferedReader br=null; try{ //下面這句是列出含有processName的進程圖像名 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){ //判斷指定的進程是否在運行 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("------判斷指定的進程是否在運行------"); System.out.println("QQ.exe該進程正在運行!"); }else{ System.out.println("------判斷指定的進程是否在運行------"); System.out.println("QQ.exe該進程沒有在運行!"); } } public static boolean findProcess(String processName){ BufferedReader br=null; try{ //下面這句是列出含有processName的進程圖像名 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){ //判斷指定的進程是否在運行 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){ } } } } }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
java之Timer和TimerTask簡單demo(分享)
下面小編就為大家?guī)硪黄猨ava之Timer和TimerTask簡單demo(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12IDEA 2020 無法啟動的解決辦法(啟動崩盤)附IDEA 2020 新功能
這篇文章主要介紹了IDEA 2020 無法啟動的解決辦法(啟動崩盤)附IDEA 2020 新功能,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04java微信企業(yè)號開發(fā)之發(fā)送消息(文本、圖片、語音)
這篇文章主要為大家詳細(xì)介紹了java微信企業(yè)號開發(fā)之發(fā)送消息,發(fā)送類型包括文本、圖片、語音,感興趣的小伙伴們可以參考一下2016-06-06Spring Security 和Apache Shiro你需要具備哪些條件
這篇文章主要介紹了Spring Security 和Apache Shiro你需要具備哪些條件,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07Java連接Mysql數(shù)據(jù)庫詳細(xì)代碼實例
這篇文章主要介紹了Java連接Mysql數(shù)據(jù)庫詳細(xì)代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-02-02