gpt4 book ai didi

Java Process类的详解及实例代码

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java Process类的详解及实例代码由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Java Process类的详解 。

前言:

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

      对Process类的简要说明:

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

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

     其它的概要请参考JDK文档 。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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(); 
    
 
  
 
}

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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)使用它的其它构造方法执行相关的命令,如下例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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(); 
    
 
  
 
}

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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)列出系统正在运行的所有进程信息 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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(); 
        
      
    
      
 
  
 
}

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)判断一个具体的进程是否正在运行,如下例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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){ 
        
      
        
    
  
}

  。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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){
         }
       }
       
     }
   }
}

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

原文链接:http://blog.csdn.net/qq_35101189/article/details/58057976 。

最后此篇关于Java Process类的详解及实例代码的文章就讲到这里了,如果你想了解更多关于Java Process类的详解及实例代码的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com