技术开发 频道

利用正则表达式获取网卡的MAC地址

  【IT168 技术文档】现在网上有许多用java实现的获取MAC地址的方法,都是利用了windows系统的config命令,但是这些方法都是直接查找config命令的输出字符串。这种方法对一种语言的windows系统还可以,当在其它语言的系统下运行时,就会出现问题,本文的代码利用正则表达式,使获取MAC地址的程序能够在多语言环境下运行。

  import java.io.*;   import java.util.regex.*;   public class ReadMacByJava   {   private String mPhysicalAddress = "";   private int mPhysicalMacNumber = 0;   private boolean isInit = false;   public ReadMacByJava()   {   }   public void init()   {   try   {   String line;   Process process = Runtime.getRuntime().exec("cmd /c ipconfig /all");   BufferedReader bufferedReader = new BufferedReader(   new InputStreamReader(process.getInputStream()));   Pattern macPattern = Pattern.compile("([0-9A-Fa-f]{2})(-[0-9A-Fa-f]{2}){5}");   Matcher macMatcher;   boolean result;   while ((line = bufferedReader.readLine()) != null)   {   if ("".equals(line))   continue;   macMatcher = macPattern.matcher(line);   result = macMatcher.find();   if (result)   {   mPhysicalMacNumber++;   if ("".equals(mPhysicalAddress))   mPhysicalAddress = macMatcher.group(0);   else   mPhysicalAddress += ("," + macMatcher.group(0));   }   }   }   catch (Exception e)   {   e.printStackTrace();   }   isInit = true;   }   public String getPhysicalAddress()   {   if (isInit)   return this.mPhysicalAddress;   else   return "Mac is not init.";   }   public int getPhysicalMacNumber()   {   if (isInit)   return this.mPhysicalMacNumber;   else   {   System.out.println("Mac is not init.");   return 0;   }   }   public static void main(String[] args)   {   ReadMacByJava mac = new ReadMacByJava();   mac.init();   System.out.println("MAC "+mac.getPhysicalMacNumber()+" address :" + mac.getPhysicalAddress());   }   }

  运行结果:

  C:\java>java ReadMacByJava

  MAC 1 address :00-40-CA-C9-9F-71

0
相关文章