Java Process类的浅学习

文章分类:Java编程

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

对Process类的简要说明:

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

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

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

其它的概要请参考JDK文档

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

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

Java代码
  1. package com.iwtxokhtd.other;
  2. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. Process proc=Runtime.getRuntime().exec("notepad");
  7. catch (IOException e) {
  8. // TODO Auto-generated catch block
  9. e.printStackTrace();
  10. }
  11. }
  12. }
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)使用它的其它构造方法执行相关的命令,如下例:

Java代码
  1. package com.iwtxokhtd.other;
  2. import java.io.IOException;
  3. public class ProcessTest {
  4. public static void main(String[] args) {
  5. try {
  6. String exeFullPathName="C:/Program Files/Internet Explorer/IEXPLORE.EXE";
  7. String message="www.google.com";
  8. String []cmd={exeFullPathName,message};
  9. Process proc=Runtime.getRuntime().exec(cmd);
  10. catch (IOException e) {
  11. // TODO Auto-generated catch block
  12. e.printStackTrace();
  13. }
  14. }
  15. }
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)列出系统正在运行的所有进程信息

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

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. if(findProcess("QQ.exe")){
  8. System.out.println("------判断指定的进程是否在运行------");
  9. System.out.println("QQ.exe该进程正在运行!");
  10. }else{
  11. System.out.println("------判断指定的进程是否在运行------");
  12. System.out.println("QQ.exe该进程没有在运行!");
  13. }
  14. }
  15. public static boolean findProcess(String processName){
  16. BufferedReader br=null;
  17. try{
  18. //下面这句是列出含有processName的进程图像名
  19. Process proc=Runtime.getRuntime().exec("tasklist /FI /"IMAGENAME eq "+processName+"/"");
  20. br=new BufferedReader(new InputStreamReader(proc.getInputStream()));
  21. String line=null;
  22. while((line=br.readLine())!=null){
  23. //判断指定的进程是否在运行
  24. if(line.contains(processName)){
  25. return true;
  26. }
  27. }
  28. return false;
  29. }catch(Exception e){
  30. e.printStackTrace();
  31. return false;
  32. }finally{
  33. if(br!=null){
  34. try{
  35. br.close();
  36. }catch(Exception ex){
  37. }
  38. }
  39. }
  40. }
  41. }
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){
}
}
}
}
}

其它的用法可以参考JDK文档,这里就不一一举例,毕竟它用得不多。

Java Process类的浅学习相关推荐

  1. Java常用类(谷粒商城学习记录)

    Java常用类 谷粒商城学习记录 谷粒商城学习记录 谷粒商城学习记录 干嘛老是提示我与别人的文章相似呢?真的是我自己整理的啊啊啊 老是提示与这个文章相似 https://blog.csdn.net/c ...

  2. java 匿名类_浅谈Java的匿名类

    在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...

  3. Java转义工具类StringEscapeUtils的学习笔记

    Java转义工具类StringEscapeUtils的学习笔记 前言 ​ 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...

  4. java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...

    Java调用批处理或可执行文件 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比 ...

  5. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  6. java流类图结构_java学习之IO流(学习之旅,一)

    个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...

  7. process java类_Java中Process类的用途是什么?

    Java.lang.Process是Object类的子类,可以描述由Runtime类的exec()方法启动的进程. 进程和对象控制进程并获取有关该进程的信息. Process类是抽象类,因此无法实例化 ...

  8. process 类 java_编写可执行jar——java的Process类的使用(二)

    你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗? 1.批处理文件 批处理文件大家一定不陌生.接触最多的应该就是tomcat中的start.bat或者start.sh了.bat ...

  9. Spring框架学习笔记04:初探Spring——采用Java配置类管理Bean

    文章目录 一.课程引入 二.采用Java配置类管理Bean (一)打开项目[SpringDemo2021] (二)创建net.hw.spring.lesson04包 (三)创建杀龙任务类 (四)创建勇 ...

最新文章

  1. The destination folder does not exist or is not writeable
  2. Lambda表达式入门,看这篇就够了!
  3. cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!
  4. SpringBoot_web开发-引入thymeleaf
  5. 「递归」第7集 | 腾讯开源联盟出征!
  6. 每一个问题都是一把锁
  7. airflow 部署
  8. verilog 生成块_Verilog数字系统设计教程之学习摘要
  9. (转)C# Enum,Int,String的互相转换 枚举转换
  10. php redis zset 延迟队列_用PHP+Redis实现延迟任务,实现自动取消订单
  11. flume http source示例讲解
  12. 使用Data studio开发opengauss数据库
  13. 编程开发软件工具下载
  14. Vue安装环境最全教程,傻瓜式安装
  15. 手把手OAuth2授权码模式(Authorization Code)
  16. numpy.arange()参数含义
  17. 心脏滴血(CVE-2014-0160)
  18. The analysis of frame
  19. 【3dsmax】中文安装配置+简单快捷键
  20. java se个人回顾笔记(持续更新)

热门文章

  1. 面试前临时抱佛脚——常见的Shell脚本面试题
  2. 3、使用二进制方式搭建K8S集群
  3. python 导入库:from scipy.misc import imread出错问题
  4. python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
  5. python导入opencv失败_mac下安装opencv python中导入错误
  6. 二叉树的深度_Golang面试题:二叉树的最大深度
  7. 如何用html语言定位img,html经常使用标签(图像标签img,连接标签a,锚点定位,及路径)...
  8. android 编译之后黑屏_android 模拟器用3.18的内核无法启动,一直黑屏。
  9. 舞伴问题数据结构java_Gale-Shapley算法解决舞伴问题过程详解(C++实现)
  10. Vue教程5【vuex】getters,mapState,mapGetters,mapActions,mapMutations,模块化namespace