ProcessBuilder执行本地命令

摘要:
/**关键技术分析*使用命令的命令名和参数选项来构造ProcessBuilder对象。它的start方法执行命令,启动一个进程,返回一个process对象*ProcessBuilder的环境方法获取正在运行的进程的环境变量,并获取一个Map。您可以修改环境变量*ProcessBuilder的directory方法切换工作目录*Process的getInputStream方法获取流程的标准输出

/**关键技术剖析

 * 用本命令名和命令的参数选项构造ProcessBuilder对象,它的start方法执行命令,启动一个进程,返回一个Process对象

 * ProcessBuilder的environment方法获得运行进程的环境变量,得到一个Map,可以修改环境变量

 * ProcessBuilder的directory方法切换工作目录

 * Process的getInputStream方法获得进程的标准输出流,getErrorStream方法获得进程的错误输出流

*/

实现的demo:

/**

 * 在J2SE5.0之前使用Runtime的exec方法执行本地命令.

 * 在J2Se5.0之后,可以使用ProcessBuilder执行本地命令

 * 它提供的功能更加丰富,能够设置设置工作目录、环境变量等

 * 本例PorcessBuilder执行Windows操作系统的"ipconfig/all"命令,获取本机网卡的MAC地址

*/

public class UsingProcessBuilder {

/**获取Windows系统下的网卡的MAC地址*/

public static List<String> getPhysicalAddress(){

Process p = null;

List<String> address = new ArrayList<String>(); //物理网卡列表

try{

p = new ProcessBuilder("ipconfig","/all").start(); //执行ipconfig/all命令

}catch(IOException e){

return address;

}

byte[] b = new byte[1024];

int readbytes = -1;

StringBuffer sb = new StringBuffer();

//读取进程输出值

//在JAVA IO中,输入输出是针对JVM而言,读写是针对外部数据源而言

InputStream in = p.getInputStream();

try{

while((readbytes = in.read(b)) != -1){

sb.append(new String(b,0,readbytes));

}

}catch(IOException e1){

}finally {

try{

in.close();

}catch (IOException e2){

}

}

//以下是分析输出值,得到物理网卡

String rtValue = sb.toString();

int i = rtValue.indexOf("Physical Address. . . . . . . . . :");

while (i > 0){

rtValue = rtValue.substring(i + "Physical Address. . . . . . . . . :".length());

address.add(rtValue.substring(1,18));

i = rtValue.indexOf("Physical Address. . . . . . . . . :");

}

return address;

}

public static void main(String[] args){

List<String> address = UsingProcessBuilder.getPhysicalAddress();

for(String add : address){

System.out.printf("物理网卡地址: %s%n",add);

}

}

}

代码中有点瑕疵,但是基本实现啊就是这样。

免责声明:文章转载自《ProcessBuilder执行本地命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python——多线程与线程锁【最新】Android使用jenkins全自动构建打包-Windows版本(Android,Jenkins,360加固,Email,QRcode,参数构建,蒲公英)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

h5页面下拉到底部加载下一页数据

Id=“+data[i].Id+”&f=“+first+”&s=“+second+”'˃“+data[1i].Title+”“+data[i].PublishTime+”“);}},错误:函数{$.removeClass.text('数据加载失败,请重试!...

小程序实现单选多选功能

applet的单选组件和复选框组件的样式只提供了变化的颜色,这显然不足以满足实际的项目需求,因此您可以自己模拟。脚注:小程序不支持dom1的操作。多个框的模拟实现:实现思路:想法非常简单。使用选中的属性绑定每个选项。类型为布尔型。单击以反转!...

Jboss

同时,为了扩大JBoss的企业市场,JBoss已经签署了许多渠道合作伙伴。2004年6月,JBoss宣布JBoss应用服务器已通过Sun公司的J2EE认证。这是JBoss应用服务器历史上最重要的里程碑。JBossAOP 1.0于2004年10月发布。这也证实了JBoss是一家创新型公司。JBoss应用服务器5.0于2008年12月6日正式发布。新版本的应用服...

部署springboot+vue项目文档(若依ruoyi项目部署步骤)

1: 部署Linux+nginx部署背景代码1.1因为我使用了idea工具进行开发,所以终端中的mvnclean包生成了相应的jar包。这个jar包可以在相应文件所在目录的目标中找到。linux服务器需要加载redis和nginx。redis存储缓存数据,nginx用于代理前端和后端服务。打包vue项目并将dist文件复制到tomcat的webapps目录中...

应用程序-特定 权限设置并未向在应用程序容器 不可用 SID (不可用)中运行的地址 LocalHost (使用 LRPC) 中的用户 NT AUTHORITYSYSTEM SID (S-1-5-18)授予针对 CLSID 为 {D63B10C5-BB46-4990-A94F-E40B9D520

此安全权限可以使用组件服务管理工具进行修改。根据APPID为{9CA88EE3-ACB7-47C8-AFC4-AB702511C276}在注册表中找到HKEY_CLASSES_ROOTAppID{9CA88EE3-ACB7-47c8-AFC4-AB702511C276}右键选择权限:加入SYSTEM用户并赋予完全控制权限:如果在注册表中没有权限添加用户,则需...

The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

修改jre中的这个文件:/java/jdk1.8/jre/lib/security/java.securityjdk.tls.legacyAlgorithms直接改成下面的这个:jdk.tls.legacyAlgorithms=SSLv3,RC4,DES,MD5withRSA,DHkeySize˂1024,ECkeySize˂224,anon,NULL,in...