posts - 0, comments - 77, trackbacks - 0, articles - 356
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
          在我們在寫程序的過程中,有些時(shí)候需要知道一些電腦的硬件信息,比如我們寫一些需要注冊的程序的時(shí)候,就需要得到某個電腦特定的信息,一般來說,網(wǎng)卡的物理地址是不會重復(fù)的,我們正好可以用它來做為我們識別一臺電腦的標(biāo)志.那如何得到網(wǎng)卡的物理地址呢?我們可以借助于ProcessBuilder這個類,這個類是JDK1.5新加的,以前也可以用Runtime.exce這個類.在此我們將演示一下如何在Windows和Linux環(huán)境下得到網(wǎng)卡的物理地址.

          代碼如下:
          /*
           * Test.java
           *
           * Created on 2007-9-27, 9:11:15
           *
           * To change this template, choose Tools | Templates
           * and open the template in the editor.
           
          */

          package test2;

          import java.io.BufferedReader;
          import java.io.IOException;
          import java.io.InputStreamReader;
          import java.util.Properties;
          import java.util.logging.Level;
          import java.util.logging.Logger;

          /**
           *
           * 
          @author hadeslee
           
          */
          public class Test {

              
          public static String getMACAddress() {

                  String address 
          = "";
                  String os 
          = System.getProperty("os.name");
                  System.out.println(os);
                  
          if (os != null) {
                      
          if (os.startsWith("Windows")) {
                          
          try {
                              ProcessBuilder pb 
          = new ProcessBuilder("ipconfig""/all");
                              Process p 
          = pb.start();
                              BufferedReader br 
          = new BufferedReader(new InputStreamReader(p.getInputStream()));
                              String line;
                              
          while ((line = br.readLine()) != null) {
                                  
          if (line.indexOf("Physical Address"!= -1) {
                                      
          int index = line.indexOf(":");
                                      address 
          = line.substring(index + 1);
                                      
          break;
                                  }
                              }
                              br.close();
                              
          return address.trim();
                          } 
          catch (IOException e) {
                              
                          }
                      }
          else if(os.startsWith("Linux")){
                          
          try {
                              ProcessBuilder pb 
          = new ProcessBuilder("ifconfig");
                              Process p 
          = pb.start();
                              BufferedReader br 
          = new BufferedReader(new InputStreamReader(p.getInputStream()));
                              String line;
                              
          while((line=br.readLine())!=null){
                                  
          int index=line.indexOf("硬件地址");
                                  
          if(index!=-1){
                                      address
          =line.substring(index+4);
                                      
          break;
                                  }
                              }
                              br.close();
                              
          return address.trim();
                          } 
          catch (IOException ex) {
                              Logger.getLogger(Test.
          class.getName()).log(Level.SEVERE, null, ex);
                          }
                          
                      }
                  }
                  
          return address;
              }

              
          public static void main(String[] args) {
                  System.out.println(
          "" + Test.getMACAddress());
              }
          }


          我們可以看一下1.5新增的ProcessBuilder這個類,這個類比起以前用Runtime.exec來說,要強(qiáng)大一些,它可以指定一個環(huán)境 變量,并指定程序運(yùn)行時(shí)的目錄空間,并且也可以得到程序運(yùn)行時(shí)的環(huán)境變量.因?yàn)閕pconfig這個命令已經(jīng)是system32里面的,所以不需要我們另外再設(shè)環(huán)境變量或者指定程序的運(yùn)行時(shí)目錄空間.我們直接用就可以了,然后得到進(jìn)程的輸出流,就可以分析出我們所需要的東西了.是不是挺簡單的呢:)

          此程序可以得到windows下和Linux下的網(wǎng)卡地址,不過LINUX要是中文版的,英文版的也一樣,只不過把字替換一下就可以了。這樣我們的程序就有了兩個平臺的實(shí)現(xiàn)。
          主站蜘蛛池模板: 宁乡县| 福鼎市| 白河县| 漠河县| 顺义区| 蒙山县| 凯里市| 仙游县| 隆回县| 泸水县| 邛崃市| 宣城市| 鄂州市| 崇明县| 保亭| 泸水县| 黄浦区| 成都市| 辽宁省| 文山县| 百色市| 卢湾区| 远安县| 河间市| 福安市| 孟津县| 嘉黎县| 宜兰县| 开封县| 桂东县| 建水县| 施甸县| 乌什县| 大连市| 遵化市| 政和县| 瓦房店市| 奉贤区| 伊春市| 石城县| 桐城市|