Java Process类的详解及实例代码
JavaProcess类的详解
前言:
今天用了下Java.lang.Process类,只是初步的学习,并没有深入实践,因为感觉它的用途并不是很大,偶尔才可能用上,如果要经常使用它的人可以自行参考JDk文档。
对Process类的简要说明:
Process类是一个抽象类,方法都是抽象的,它封装了一个进程,也就是一个可执行的程序 该类提供进程的输入、执行输出到进程、等待进程的完成和检查进程的退出状态及销毁进程的方法
ProcessBuilder.start()和Runtime.exec方法创建一个本机进程并返回Process子类的一个实例,该实例可以控制进程并获取相关的信息
其它的概要请参考JDK文档
下面就开始举几个简单的示例:
(1)执行简单的DOS命令,如打开一个记事本
packagecom.iwtxokhtd.other; importjava.io.IOException; publicclassProcessTest{ publicstaticvoidmain(String[]args){ try{ Processproc=Runtime.getRuntime().exec("notepad"); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
packagecom.iwtxokhtd.other; importjava.io.IOException; publicclassProcessTest{ publicstaticvoidmain(String[]args){ try{ Processproc=Runtime.getRuntime().exec("notepad"); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
(2)使用它的其它构造方法执行相关的命令,如下例:
packagecom.iwtxokhtd.other; importjava.io.IOException; publicclassProcessTest{ publicstaticvoidmain(String[]args){ try{ StringexeFullPathName="C:/ProgramFiles/InternetExplorer/IEXPLORE.EXE"; Stringmessage="www.google.com"; String[]cmd={exeFullPathName,message}; Processproc=Runtime.getRuntime().exec(cmd); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
packagecom.iwtxokhtd.other; importjava.io.IOException; publicclassProcessTest{ publicstaticvoidmain(String[]args){ try{ StringexeFullPathName="C:/ProgramFiles/InternetExplorer/IEXPLORE.EXE"; Stringmessage="www.google.com"; String[]cmd={exeFullPathName,message}; Processproc=Runtime.getRuntime().exec(cmd); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } }
执行上述命令可以打开Google网站
(3)列出系统正在运行的所有进程信息
packagecom.iwtxokhtd.other; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; publicclassListAllProcessTest{ //列出所有的进程信息 publicstaticvoidmain(String[]args){ BufferedReaderbr=null; try{ Processproc=Runtime.getRuntime().exec("tasklist"); br=newBufferedReader(newInputStreamReader(proc.getInputStream())); @SuppressWarnings("unused") Stringline=null; System.out.println("打印所有正在运行的进程信息"); while((line=br.readLine())!=null){ System.out.println(br.readLine()); } }catch(IOExceptione){ e.printStackTrace(); }finally{ if(br!=null){ try{ br.close(); }catch(Exceptione){ e.printStackTrace(); } } } } }
packagecom.iwtxokhtd.other; importjava.io.BufferedReader; importjava.io.IOException; importjava.io.InputStreamReader; publicclassListAllProcessTest{ //列出所有的进程信息 publicstaticvoidmain(String[]args){ BufferedReaderbr=null; try{ Processproc=Runtime.getRuntime().exec("tasklist"); br=newBufferedReader(newInputStreamReader(proc.getInputStream())); @SuppressWarnings("unused") Stringline=null; System.out.println("打印所有正在运行的进程信息"); while((line=br.readLine())!=null){ System.out.println(br.readLine()); } }catch(IOExceptione){ e.printStackTrace(); }finally{ if(br!=null){ try{ br.close(); }catch(Exceptione){ e.printStackTrace(); } } } } }
(4)判断一个具体的进程是否正在运行,如下例:
packagecom.iwtxokhtd.other; importjava.io.BufferedReader; importjava.io.InputStreamReader; publicclassFindProcessExeTest { publicstaticvoidmain(String[]args){ if(findProcess("QQ.exe")){ System.out.println("------判断指定的进程是否在运行------"); System.out.println("QQ.exe该进程正在运行!"); }else{ System.out.println("------判断指定的进程是否在运行------"); System.out.println("QQ.exe该进程没有在运行!"); } } publicstaticbooleanfindProcess(StringprocessName){ BufferedReaderbr=null; try{ //下面这句是列出含有processName的进程图像名 Processproc=Runtime.getRuntime().exec("tasklist/FI/"IMAGENAMEeq"+processName+"/""); br=newBufferedReader(newInputStreamReader(proc.getInputStream())); Stringline=null; while((line=br.readLine())!=null){ //判断指定的进程是否在运行 if(line.contains(processName)){ returntrue; } } returnfalse; }catch(Exceptione){ e.printStackTrace(); returnfalse; }finally{ if(br!=null){ try{ br.close(); }catch(Exceptionex){ } } } } }
packagecom.iwtxokhtd.other; importjava.io.BufferedReader; importjava.io.InputStreamReader; publicclassFindProcessExeTest { publicstaticvoidmain(String[]args){ if(findProcess("QQ.exe")){ System.out.println("------判断指定的进程是否在运行------"); System.out.println("QQ.exe该进程正在运行!"); }else{ System.out.println("------判断指定的进程是否在运行------"); System.out.println("QQ.exe该进程没有在运行!"); } } publicstaticbooleanfindProcess(StringprocessName){ BufferedReaderbr=null; try{ //下面这句是列出含有processName的进程图像名 Processproc=Runtime.getRuntime().exec("tasklist/FI/"IMAGENAMEeq"+processName+"/""); br=newBufferedReader(newInputStreamReader(proc.getInputStream())); Stringline=null; while((line=br.readLine())!=null){ //判断指定的进程是否在运行 if(line.contains(processName)){ returntrue; } } returnfalse; }catch(Exceptione){ e.printStackTrace(); returnfalse; }finally{ if(br!=null){ try{ br.close(); }catch(Exceptionex){ } } } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!