首页 > 开发 > Java > 正文

Java Process类的详解及实例代码

2024-07-13 10:04:51
字体:
来源:转载
供稿:网友

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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表