Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
byte[] hardwareAddress = networkInterface.getHardwareAddress();
if (hardwareAddress != null) {
for (int i = 0; i < hardwareAddress.length; i++) {
System.out.print(String.format("%x", hardwareAddress[i]));
if (i != hardwareAddress.length - 1) {
System.out.print(":");
}
}
System.out.println();
}
}
以前的方法
public static String[] getMacs() throws IOException {
Runtime runtime = Runtime.getRuntime();
List<String> alMac = new ArrayList<String>();
BufferedReader rd = null;
try {
Process process = runtime.exec("ipconfig /all");//这种方法不能跨os, 只能根据不同的os写不同的命令
InputStream is = process.getInputStream();
rd = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = rd.readLine()) != null) {
if (line.indexOf("物理地址") > -1 || line.toLowerCase().startsWith("physical address")) {
int index = line.lastIndexOf(":");
if (line.length() - 1 >= index && index > -1) {
String mac = line.substring(index + 1);
alMac.add(mac);
}
}
}
} finally {
if (rd != null) rd.close();
}
return alMac.toArray(new String[0]);
}