`

JDK6新特性,JAVA获得机器MAC地址的方法

 
阅读更多

这个代码包含了以前常见的用Runtime实现的方法,已经使用JDK1.6新特性实现的方法。

  1. importjava.io.BufferedReader;
  2. importjava.io.InputStreamReader;
  3. importjava.net.NetworkInterface;
  4. importjava.util.Enumeration;
  5. /**
  6. *JDK6新特性,JAVA获得机器MAC地址的方法
  7. *
  8. *@author老紫竹(Java世纪网,java2000.net)
  9. */
  10. publicclassTest{
  11. //返回一个字节的十六进制字符串
  12. staticStringhexByte(byteb){
  13. Strings="000000"+Integer.toHexString(b);
  14. returns.substring(s.length()-2);
  15. }
  16. publicstaticvoidmain(String[]args)throwsException{
  17. System.out.println("本机器的所有的网卡MAC发下:");
  18. getMacOnWindow();
  19. getMac();
  20. }
  21. /**
  22. *JDK1.6新特性获取网卡MAC地址
  23. */
  24. publicstaticvoidgetMac(){
  25. try{
  26. Enumeration<NetworkInterface>el=NetworkInterface.getNetworkInterfaces();
  27. while(el.hasMoreElements()){
  28. byte[]mac=el.nextElement().getHardwareAddress();
  29. if(mac==null)
  30. continue;
  31. StringBuilderbuilder=newStringBuilder();
  32. for(byteb:mac){
  33. builder.append(hexByte(b));
  34. builder.append("-");
  35. }
  36. builder.deleteCharAt(builder.length()-1);
  37. System.out.println(builder);
  38. }
  39. }catch(Exceptionexception){
  40. exception.printStackTrace();
  41. }
  42. }
  43. /**
  44. *原始的获取网卡MAC地址
  45. */
  46. publicstaticvoidgetMacOnWindow(){
  47. try{
  48. Stringmac=null;
  49. Processprocess=Runtime.getRuntime().exec("ipconfig/all");
  50. BufferedReaderbuffer=newBufferedReader(newInputStreamReader(process.getInputStream()));
  51. for(Stringline=buffer.readLine();line!=null;line=buffer.readLine()){
  52. intindex=line.indexOf("PhysicalAddress");
  53. if(index<=0){
  54. continue;
  55. }
  56. mac=line.substring(index+36);
  57. break;
  58. }
  59. buffer.close();
  60. process.waitFor();
  61. System.out.println(mac);
  62. }catch(Exceptionexception){
  63. exception.printStackTrace();
  64. }
  65. }
  66. }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics