Java Process类的详解及实例代码

这篇文章主要介绍了Java Process类的详解及实例代码的相关资料,需要的朋友可以参考下

Java Process类的详解

前言:

      今天用了下Java.lang.Process类,只是初步的学习,并没有深入实践,因为感觉它的用途并不是很大,偶尔才可能用上,如果要经常使用它的人可以自行参考JDk文档。

      对Process类的简要说明:

     Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序  该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法

     ProcessBuilder.start()和Runtime.exec方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息

     其它的概要请参考JDK文档

     下面就开始举几个简单的示例:

     (1)执行简单的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)使用它的其它构造方法执行相关的命令,如下例:

 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(); } } } 

 执行上述命令可以打开Google网站

(3)列出系统正在运行的所有进程信息

 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){ } } } } } 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

以上就是Java Process类的详解及实例代码的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » Java