TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
现在网上有许多用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
源码下载:http://file.javaxxz.com/2014/10/28/235835093.zip |
|