• J2SE5.0新特性之ProcessBuilder


    这个例子使用了J2SE5.0的ProcessBuilder类执行外部的程序,相对于 Runtime.exec ,它更方便,可以设置环境变量等。这里使用它在windows下读取物理网卡的地址
    1. package com.kuaff.jdk5package;
    2. import java.io.IOException;
    3. import java.io.InputStream;
    4. import java.util.ArrayList;
    5. import java.util.List;
    6. public class ProcessBuilderShow
    7. {
    8.     public static List<String> getPhysicalAddress()
    9.     {
    10.         Process p = null;
    11.         //物理网卡列表
    12.         List<String> address = new ArrayList<String>();
    13.         try
    14.         {
    15.             //执行ipconfig /all命令
    16.             p = new ProcessBuilder("ipconfig""/all").start();
    17.         }
    18.         catch (IOException e)
    19.         {
    20.             return  address;
    21.         }
    22.         byte[] b = new byte[1024];
    23.         StringBuffer sb = new StringBuffer();
    24.         //读取进程输出值
    25.         InputStream in = p.getInputStream();
    26.         try
    27.         {
    28.             while (in.read(b)>0)
    29.             {
    30.                 sb.append(new String(b));
    31.             }
    32.         }
    33.         catch (IOException e1)
    34.         {
    35.         }
    36.         finally
    37.         {
    38.             try
    39.             {
    40.                 in.close();
    41.             }
    42.             catch (IOException e2)
    43.             {
    44.             }
    45.         }
    46.         //以下分析输出值,得到物理网卡
    47.         String rtValue = sb.substring(0);
    48.         int i = rtValue.indexOf("Physical Address. . . . . . . . . :");
    49.         while(i>0)
    50.         {
    51.             rtValue = rtValue.substring(i + "Physical Address. . . . . . . . . :".length());
    52.             address.add(rtValue.substring(0,18));
    53.             i = rtValue.indexOf("Physical Address. . . . . . . . . :");
    54.         }
    55.         
    56.         return address;
    57.         
    58.     }
    59.     public static void main(String[] args)
    60.     {
    61.         List<String> address = ProcessBuilderShow.getPhysicalAddress();
    62.         for(String add:address)
    63.         {
    64.             System.out.printf("物理网卡地址:%s%n", add);
    65.         }
    66.     }
    67. }
  • 相关阅读:
    【五】服务熔断、降级 —— Hystrix(豪猪)
    32. Springboot 系列(八)动态Banner与图片转字符图案的手动实现
    31.【微服务架构】SpringCloud之Feign(五)
    新SQL temp
    lombok踩坑与思考
    lombok注解介绍
    叉乘实现角色和敌人的位置判断(左上,左下,右上,右下)
    2维,3维向量单位化
    2个2D向量计算交点的夹角和补角
    Unity编辑器-创建单独编辑框,折叠框,提示框
  • 原文地址:https://www.cnblogs.com/Finding2013/p/159206.html
Copyright © 2020-2023  润新知