Java Process类的浅学习
Java Process类的浅学习
文章分类:Java编程
今天用了下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){
}
}
}
}
}
其它的用法可以参考JDK文档,这里就不一一举例,毕竟它用得不多。
Java Process类的浅学习相关推荐
- Java常用类(谷粒商城学习记录)
Java常用类 谷粒商城学习记录 谷粒商城学习记录 谷粒商城学习记录 干嘛老是提示我与别人的文章相似呢?真的是我自己整理的啊啊啊 老是提示与这个文章相似 https://blog.csdn.net/c ...
- java 匿名类_浅谈Java的匿名类
在实际的项目中看到一个很奇怪的现象,Java可以直接new一个接口,然后在new里面粗暴的加入实现代码.就像下面这样.那么问题来了,new出来的对象没有实际的类作为载体,这不是很奇怪吗? 思考以下代码 ...
- Java转义工具类StringEscapeUtils的学习笔记
Java转义工具类StringEscapeUtils的学习笔记 前言 在java.commons.lang3 的包中有许多方便好用的工具类,类似于处理字符串的StringUtils,处理日期的Da ...
- java实现进程管理,Java调用批处理或可执行文件和Runtime、Process类实现Java版进程管理器...
Java调用批处理或可执行文件 用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现.下面是一种比 ...
- Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)
计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...
- java流类图结构_java学习之IO流(学习之旅,一)
个人在学习IO流的时候看到如下所示java 流类图结构的时候,我的感想是,这么多··处于蒙的状态. Java流类图结构 这么多,没有分类不好学,那我们就慢慢一口一口的吃,这样每天学习一点就好了,其实很 ...
- process java类_Java中Process类的用途是什么?
Java.lang.Process是Object类的子类,可以描述由Runtime类的exec()方法启动的进程. 进程和对象控制进程并获取有关该进程的信息. Process类是抽象类,因此无法实例化 ...
- process 类 java_编写可执行jar——java的Process类的使用(二)
你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗? 1.批处理文件 批处理文件大家一定不陌生.接触最多的应该就是tomcat中的start.bat或者start.sh了.bat ...
- Spring框架学习笔记04:初探Spring——采用Java配置类管理Bean
文章目录 一.课程引入 二.采用Java配置类管理Bean (一)打开项目[SpringDemo2021] (二)创建net.hw.spring.lesson04包 (三)创建杀龙任务类 (四)创建勇 ...
最新文章
- The destination folder does not exist or is not writeable
- Lambda表达式入门,看这篇就够了!
- cd返回上一 git_PHP项目中应用CI/CD的碎碎恋!
- SpringBoot_web开发-引入thymeleaf
- 「递归」第7集 | 腾讯开源联盟出征!
- 每一个问题都是一把锁
- airflow 部署
- verilog 生成块_Verilog数字系统设计教程之学习摘要
- (转)C# Enum,Int,String的互相转换 枚举转换
- php redis zset 延迟队列_用PHP+Redis实现延迟任务,实现自动取消订单
- flume http source示例讲解
- 使用Data studio开发opengauss数据库
- 编程开发软件工具下载
- Vue安装环境最全教程,傻瓜式安装
- 手把手OAuth2授权码模式(Authorization Code)
- numpy.arange()参数含义
- 心脏滴血(CVE-2014-0160)
- The analysis of frame
- 【3dsmax】中文安装配置+简单快捷键
- java se个人回顾笔记(持续更新)
热门文章
- 面试前临时抱佛脚——常见的Shell脚本面试题
- 3、使用二进制方式搭建K8S集群
- python 导入库:from scipy.misc import imread出错问题
- python神经结构二层_《python深度学习》笔记---8.3、神经风格迁移
- python导入opencv失败_mac下安装opencv python中导入错误
- 二叉树的深度_Golang面试题:二叉树的最大深度
- 如何用html语言定位img,html经常使用标签(图像标签img,连接标签a,锚点定位,及路径)...
- android 编译之后黑屏_android 模拟器用3.18的内核无法启动,一直黑屏。
- 舞伴问题数据结构java_Gale-Shapley算法解决舞伴问题过程详解(C++实现)
- Vue教程5【vuex】getters,mapState,mapGetters,mapActions,mapMutations,模块化namespace