Java Process類的詳解及實例代碼
Java Process類的詳解
前言:
今天用了下Java.lang.Process類,只是初步的學(xué)習(xí),并沒有深入實踐,因為感覺它的用途并不是很大,偶爾才可能用上,如果要經(jīng)常使用它的人可以自行參考JDk文檔。
對Process類的簡要說明:
Process類是一個抽象類,方法都是抽象的,它封裝了一個進(jìn)程,也就是一個可執(zhí)行的程序 該類提供進(jìn)程的輸入、執(zhí)行輸出到進(jìn)程、等待進(jìn)程的完成和檢查進(jìn)程的退出狀態(tài)及銷毀進(jìn)程的方法
ProcessBuilder.start()和Runtime.exec方法創(chuàng)建一個本機(jī)進(jìn)程并返回Process子類的一個實例,該實例可以控制進(jìn)程并獲取相關(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)正在運行的所有進(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("打印所有正在運行的進(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("打印所有正在運行的進(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)判斷一個具體的進(jì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)程是否在運行------");
System.out.println("QQ.exe該進(jìn)程正在運行!");
}else{
System.out.println("------判斷指定的進(jìn)程是否在運行------");
System.out.println("QQ.exe該進(jì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)程是否在運行
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)程是否在運行------");
System.out.println("QQ.exe該進(jìn)程正在運行!");
}else{
System.out.println("------判斷指定的進(jìn)程是否在運行------");
System.out.println("QQ.exe該進(jì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)程是否在運行
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網(wǎng)絡(luò)編程實現(xiàn)多線程聊天
這篇文章主要為大家詳細(xì)介紹了Java網(wǎng)絡(luò)編程實現(xiàn)多線程聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-07-07
Java編程中靜態(tài)內(nèi)部類與同步類的寫法示例
這篇文章主要介紹了Java編程中靜態(tài)內(nèi)部類與同步類的寫法示例,用于構(gòu)建靜態(tài)對象以及實現(xiàn)線程同步等,需要的朋友可以參考下2015-09-09
Spring中@Transactional用法詳細(xì)介紹
這篇文章主要介紹了Spring中@Transactional用法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02
Java實現(xiàn)字符編碼轉(zhuǎn)換(utf-8/gbk)
這篇文章主要為大家詳細(xì)介紹了如何使用Java實現(xiàn)字符編碼轉(zhuǎn)換工具,主要針對UTF-8和GBK兩種編碼格式,文中的示例代碼講解詳,需要的可以了解下2025-03-03
springboot集成mybatis-maven插件自動生成pojo的詳細(xì)教程
這篇文章主要介紹了springboot集成mybatis-maven插件自動生成pojo的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

