Java Process类的浅学习

来源:互联网 发布:淘宝直通车关键词 编辑:程序博客网 时间:2024/04/27 18:45
 

Java Process类的浅学习

文章分类:Java编程

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

      对Process类的简要说明:

     Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序

     该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法

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

     其它的概要请参考JDK文档

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

     (1)执行简单的DOS命令,如打开一个记事本

    

Java代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                         Process proc=Runtime.getRuntime().exec("notepad");   
  10.         } catch (IOException e) {   
  11.             // TODO Auto-generated catch block   
  12.             e.printStackTrace();   
  13.         }   
  14.   
  15.     }   
  16.   
  17. }  

 

(2)使用它的其它构造方法执行相关的命令,如下例:

 

Java代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. public class ProcessTest {   
  6.   
  7.     public static void main(String[] args) {   
  8.         try {   
  9.                
  10.             String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";   
  11.             String message="www.google.com";   
  12.             String []cmd={exeFullPathName,message};   
  13.             Process proc=Runtime.getRuntime().exec(cmd);   
  14.         } catch (IOException e) {   
  15.             // TODO Auto-generated catch block   
  16.             e.printStackTrace();   
  17.         }   
  18.   
  19.     }   
  20.   
  21. }  

 

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

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

  

Java代码
  1. package com.iwtxokhtd.other;   
  2.   
  3. import java.io.BufferedReader;   
  4. import java.io.IOException;   
  5. import java.io.InputStreamReader;   
  6.   
  7. public class ListAllProcessTest {   
  8.   
  9.     //列出所有的进程信息   
  10.     public static void main(String[] args) {   
  11.         BufferedReader br=null;   
  12.         try {   
  13.             Process proc=Runtime.getRuntime().exec("tasklist");   
  14.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  15.             @SuppressWarnings("unused")   
  16.             String line=null;   
  17.             System.out.println("打印所有正在运行的进程信息");   
  18.             while((line=br.readLine())!=null){   
  19.                 System.out.println(br.readLine());   
  20.             }   
  21.         } catch (IOException e) {   
  22.             e.printStackTrace();   
  23.         }finally{   
  24.             if(br!=null){   
  25.                 try {   
  26.                     br.close();   
  27.                 } catch (Exception e) {   
  28.                     e.printStackTrace();   
  29.                 }   
  30.             }   
  31.         }   
  32.            
  33.   
  34.     }   
  35.   
  36. }  

 

(4)判断一个具体的进程是否正在运行,如下例:

Java代码
  1. package com.iwtxokhtd.other;   
  2. import java.io.BufferedReader;   
  3. import java.io.InputStreamReader;   
  4. public class FindProcessExeTest   
  5. {   
  6.     public static void main(String []args){   
  7.            
  8.         if(findProcess("QQ.exe")){   
  9.             System.out.println("------判断指定的进程是否在运行------");   
  10.             System.out.println("QQ.exe该进程正在运行!");   
  11.         }else{   
  12.             System.out.println("------判断指定的进程是否在运行------");   
  13.             System.out.println("QQ.exe该进程没有在运行!");   
  14.         }   
  15.   
  16.     }   
  17.     public static boolean findProcess(String processName){   
  18.         BufferedReader br=null;   
  19.         try{   
  20.               
  21.             //下面这句是列出含有processName的进程图像名   
  22.             Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");   
  23.             br=new BufferedReader(new InputStreamReader(proc.getInputStream()));   
  24.             String line=null;   
  25.             while((line=br.readLine())!=null){   
  26.                 //判断指定的进程是否在运行   
  27.                 if(line.contains(processName)){   
  28.                     return true;   
  29.                 }   
  30.             }   
  31.                
  32.             return false;   
  33.         }catch(Exception e){   
  34.             e.printStackTrace();   
  35.             return false;   
  36.         }finally{   
  37.             if(br!=null){   
  38.                 try{   
  39.                     br.close();   
  40.                 }catch(Exception ex){   
  41.                 }   
  42.             }   
  43.                
  44.         }   
  45.     }   
  46. }  
原创粉丝点击