import
java.net.NetworkInterface
;
import
java.util.ArrayList
;
import
java.util.Enumeration
;
import
java.util.List
;
public
class
TestMac {
/**
* @param args
* @throws Exception
*/
public
static
void
main(
String
[
]
args)
throws
Exception
{
List<
String>
list =
getMacSinceJDK6(
)
;
for
(
String
s :
list)
{
System
.out
.println
(
s)
;
}
}
private
static
String
hexByte(
byte
b)
{
String
s =
Integer
.toHexString
(
b)
;
int
len =
s.length
(
)
;
for
(
int
i =
len;
i <
8
;
i++
)
{
s =
"0"
+
s;
}
return
s.substring
(
6
)
.toUpperCase
(
)
;
}
/**
* 获取MAC地址,length为0时,为获取失败,有可能有多个mac地址
*
* @since jdk6
* @return List<String>
*/
private
static
List<
String>
getMacSinceJDK6(
)
{
List<
String>
list =
new
ArrayList<
String>
(
)
;
try
{
Enumeration<
NetworkInterface>
el =
NetworkInterface
.getNetworkInterfaces
(
)
;
while
(
el.hasMoreElements
(
)
)
{
byte
[
]
mac =
el.nextElement
(
)
.getHardwareAddress
(
)
;
if
(
mac ==
null
||
mac.length
==
0
)
{
continue
;
}
StringBuffer
sb =
new
StringBuffer
(
)
;
for
(
byte
b :
mac)
{
sb.append
(
hexByte(
b)
)
;
sb.append
(
"-"
)
;
}
sb.deleteCharAt
(
sb.length
(
)
-
1
)
;
list.add
(
sb.toString
(
)
)
;
}
}
catch
(
Exception
e)
{
e.printStackTrace
(
)
;
}
return
list;
}
}