/**关键技术剖析

* 用本命令名和命令的参数选项构造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执行本地命令的更多相关文章

  1. 7.使用ProcessBuilder执行本地命令(转)

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...

  2. JDK5.0特性,使用ProcessBuilder执行本地命令

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.IO ...

  3. JAVA中ProcessBuilder执行cmd命令找不到路径的解决方法

    今天遇到了一个很奇葩的问题,终于解决了,记一下,以做备忘. 前提条件:工程路径在D盘下 cmd要执行的可执行文件路径不在D盘下 然后...出事了............................ ...

  4. 0 Linux下Java使用ProcessBuilder执行命令与直接Bash执行命令之间的不同(环境变量方面)

    0 问题发生 xiaojietest.java package tasks; import java.io.BufferedReader; import java.io.BufferedWriter; ...

  5. java中执行cmd命令

    一.java执行cmd命令的三种方式:http://www.jb51.net/article/80829.htm 参考:https://www.cnblogs.com/zhufu9426/p/7928 ...

  6. Linux远程执行Shell命令或脚本

    ## 远程执行shell命令 ssh [user]@[server] '[command]' # eg. ssh root@192.168.1.1 'uptime' ## 远程执行本地shell脚本 ...

  7. redis如何执行redis命令

    Redis 命令 Redis 命令用于在 redis 服务上执行操作.所以我们必须要启动Redis服务程序,也就是redis安装目录下的redis-server.exe,你可以双击执行,也可以打开cm ...

  8. 在c++程序中执行DOS命令

    转自博客:http://blog.csdn.net/ypist/article/details/8485049 #1,system()方式 在C盘根目录下新建文件夹,名称为12: system(&qu ...

  9. Ubuntu 14.10 下SSH执行远程命令

    有些时候需要在远程机器上执行命令,如果每次都等进去挺麻烦的,所以用脚本执行会方便很多.下面介绍一下在shell脚本中执行远程命令. 1,首先写好要运行的脚本 run-command.sh, 加上执行权 ...

随机推荐

  1. Discuz管理员前台正常后台登录不进如何解决

    Discuz管理员前台可以登录后台无法登录的解决方法步骤如下 1. 取消ip认证 config_global.php 中找到 $_config['admincp']['checkip'] = 0 2. ...

  2. 利用DM工具Weka进行数据挖掘(分类)的完整过程

    利用DM工具Weka进行数据挖掘(分类)的完整过程:

  3. 执行 maven 命令 报错Unable to add module to the current project as it is not of packaging type 'pom'[转]

    今天学习在本地搭建Maven工程时,执行了mvn archetype:generate 命令,报错. Unable to create project from archetype [org.apac ...

  4. JS和JSP的差别

    近期非常多同学在纠结于名词缩写之间的相似性.因此本人也来写一篇,讲讲JS和JSP的差别. SUN首先发展出SERVLET,其功能比較强劲,体系设计也非常先进,仅仅是,它输出HTML语句还是採用了老的C ...

  5. FPGA管脚分配文件保存方法

    使用别人的工程时,有时找不到他的管脚文件,但可以把他已经绑定好的管脚保存下来,输出到文件里. 方法一: 查看引脚绑定情况,quartus -> assignment -> Pins,打开F ...

  6. RESTful Web Service实战 小结1

    1 REST的基本实现形式HTTP+URI+XML,但不是唯一形式.XML后来被Json格式替代.REST是一中架构风格(Representational State Transfer,表述性状态转移 ...

  7. Java数据结构和算法(一):简介

    本系列博客我们将学习数据结构和算法,为什么要学习数据结构和算法,这里我举个简单的例子. 编程好比是一辆汽车,而数据结构和算法是汽车内部的变速箱.一个开车的人不懂变速箱的原理也是能开车的,同理一个不懂数 ...

  8. AngularJS 中 Provider 的用法及区别

    在一个分层良好的 Angular 应用中,Controller 这一层应该很薄.也就是说,应用里大部分的业务逻辑和持久化数据都应该放在 Service 里. 为此,理解 AngularJS 中的几个 ...

  9. CUGBACM Codeforces Tranning 3 题解

    链接:http://acm.hust.edu.cn/vjudge/contest/view.action? cid=62515#overview 描写叙述:第三场CF训练了.这次做的挺搞笑的,我记得这 ...

  10. atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结

    atitit.编程语言会形成进化树--哪些特性会繁荣??通才还是专才的选型 现代编程语言的特性总结 1.  有一种观点,编程语言就像物种,会形成进化树,有的分支会死掉. 多年之后,你觉得语言会演化成什 ...