|
现在网上有许多用java实现的获取MAC地址的方法,都是利用了windows系统的config命令,但是这些方法都是直接查找config命 令的输出字符串。这种方法对一种语言的windows系统还可以,当在其它语言的系统下运行时,就会出现问题,本文的代码利用正则表达式,使获取MAC地 址的程序能够在多语言环境下运行。
packagecn.csdn.hongke1490.tools;
importjava.io.*;
importjava.util.regex.*;
publicclassReadMacByJava
{
privateString mPhysicalAddress ="";
privateintmPhysicalMacNumber =0;
privatebooleanisInit =false;
publicReadMacByJava()
{
}
publicvoidinit()
{
try {
String line;
Process process =Runtime.getRuntime().exec("cmd /c ipconfig /all");
BufferedReader bufferedReader =newBufferedReader(
newInputStreamReader(process.getInputStream()));
Pattern macPattern =Pattern.compile("([0-9A-Fa-f]{2})(-[0-9A-Fa-f]{2}){5}");
Matcher macMatcher;
booleanresult;
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;
}
publicString getPhysicalAddress()
{
if(isInit)
returnthis.mPhysicalAddress;
else return"Mac is not init.";
}
publicintgetPhysicalMacNumber()
{
if(isInit)
returnthis.mPhysicalMacNumber;
else {
System.out.println("Mac is not init.");
return0;
}
}
publicstaticvoidmain(String[] args)
{
ReadMacByJava mac =newReadMacByJava();
mac.init();
System.out.println("MAC "+mac.getPhysicalMacNumber()+"address :"+mac.getPhysicalAddress());
}
}
|
|