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

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

package  cn.csdn.hongke1490.tools;

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());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值