java获取当前操作系统名称以及各系统的本机网卡地址

来源:互联网 发布:给第三方推送数据 编辑:程序博客网 时间:2024/09/21 09:02
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetAddress;import java.net.NetworkInterface;/** *  * @author humf * */public class MacAddress {/** * 获取本机网卡的mac地址. * @return mac地址 */public static String getLocalMac() {byte[] mac = null;try {InetAddress ip = InetAddress.getLocalHost();NetworkInterface network = NetworkInterface.getByInetAddress(ip);mac = network.getHardwareAddress();} catch (Exception e) {e.printStackTrace();}StringBuilder sb = new StringBuilder("");if (mac != null) {for (int i = 0; i < mac.length; i++) {sb.append(String.format("%02X%s", mac[i],(i < mac.length - 1) ? "-" : ""));}}return sb.toString();}/** * 获取当前操作系统名称. return 操作系统名称 例如:windows,Linux,Unix等. */public static String getOSName() {return System.getProperty("os.name").toLowerCase();}/** * 获取Unix网卡的mac地址. *  * @return mac地址 */@SuppressWarnings("unused")private static String getUnixMACAddress() {String mac = null;BufferedReader bufferedReader = null;Process process = null;try {/** * Unix下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 */process = Runtime.getRuntime().exec("ifconfig eth0");bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;int index = -1;while ((line = bufferedReader.readLine()) != null) {/** * 寻找标示字符串[hwaddr] */index = line.toLowerCase().indexOf("hwaddr");/** * 找到了 */if (index != -1) {/** * 取出mac地址并去除2边空格 */mac = line.substring(index + "hwaddr".length() + 1).trim();break;}}} catch (IOException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e1) {e1.printStackTrace();}bufferedReader = null;process = null;}return mac;}/** * 获取Linux网卡的mac地址. *  * @return mac地址 */@SuppressWarnings("unused")private static String getLinuxMACAddress() {String mac = null;BufferedReader bufferedReader = null;Process process = null;try {/** * linux下的命令,一般取eth0作为本地主网卡 显示信息中包含有mac地址信息 */process = Runtime.getRuntime().exec("ifconfig eth0");bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;int index = -1;while ((line = bufferedReader.readLine()) != null) {index = line.toLowerCase().indexOf("硬件地址");/** * 找到了 */if (index != -1) {/** * 取出mac地址并去除2边空格 */mac = line.substring(index + 4).trim();break;}}} catch (IOException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e1) {e1.printStackTrace();}bufferedReader = null;process = null;}return mac;}/** * 获取widnows网卡的mac地址. *  * @return mac地址 */@SuppressWarnings("unused")private static String getWindowsMACAddress() {String mac = null;BufferedReader bufferedReader = null;Process process = null;try {/** * windows下的命令,显示信息中包含有mac地址信息 */process = Runtime.getRuntime().exec("cmd /c ipconfig /all");bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));String line = null;int index = -1;while ((line = bufferedReader.readLine()) != null) {/** * 寻找标示字符串[physical address] */index = line.toLowerCase().indexOf("Physical Address");if (index != -1) {index = line.indexOf(":");if (index != -1) {/** * 取出mac地址并去除2边空格 */mac = line.substring(index + 1).trim();}break;}}} catch (IOException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}} catch (IOException e1) {e1.printStackTrace();}bufferedReader = null;process = null;}return mac;}public static void main(String[] args) {System.out.println(MacAddress.class.getResource("/").getPath());}}

1 0