第一篇:JAVA获得设备信息

来源:互联网 发布:facebook 聊天软件 编辑:程序博客网 时间:2024/06/02 19:03

做Java开发时,可能会获得设备的一些信息,比如CPU、内存,做一些监控等,今天介绍一种JAVA获得设备信息的方式,使用的第三方包为sigar.jar(根据操作系统类型,还要添加对应的动态链接库)。 
代码如下:

import java.net.InetAddress;import java.util.Set;import java.util.TreeSet;import org.hyperic.sigar.CpuInfo;import org.hyperic.sigar.FileSystem;import org.hyperic.sigar.FileSystemUsage;import org.hyperic.sigar.Mem;import org.hyperic.sigar.OperatingSystem;import org.hyperic.sigar.Sigar;import org.hyperic.sigar.SigarException;import org.hyperic.sigar.Swap;/** * 设备信息工具类 *  * @author gjjiang *  */public class DeviceUtils{   /** sigar对象,用于获得设备信息 **/   private Sigar sigar = null;   /**    * 初始化方法    */   public DeviceUtils()   {      sigar = new Sigar();   }   /**    * 关闭,释放sigar相关资源    */   public void close()   {      sigar.close();   }   /**    * 获得CPU信息    *     * @return    * @throws SigarException    */   public CpuInfo[] getCpuInfo() throws SigarException   {      return sigar.getCpuInfoList();   }   /**    * 获得内存信息    *     * @return    * @throws SigarException    */   public Mem getMem() throws SigarException   {      return sigar.getMem();   }   /**    * 获得系统页面文件交换区信息    *     * @return    * @throws SigarException    */   public Swap getSwap() throws SigarException   {      return sigar.getSwap();   }   /**    * 取到当前操作系统的名称    *     * @return    */   public String getHostName()   {      String hostname = "";      try      {         hostname = InetAddress.getLocalHost().getHostName();      }      catch (Exception exc)      {         try         {            hostname = sigar.getNetInfo().getHostName();         }         catch (SigarException e)         {            hostname = "unknown";         }      }      return hostname;   }   /**    * 获得操作系统信息    *     * @return    */   public OperatingSystem getOSInfo()   {      return OperatingSystem.getInstance();   }   /**    * 获取文件系统信息    *     * @throws SigarException    */   public FileSystem[] getFileSystemInfo() throws SigarException   {      return sigar.getFileSystemList();      // FileSystem fs = fslist[i];      // // 分区的盘符名称      // print("fs.getDevName() = " + fs.getDevName());      // // 分区的盘符名称      // print("fs.getDirName() = " + fs.getDirName());      // print("fs.getFlags() = " + fs.getFlags());//      // // 文件系统类型,比如 FAT32、NTFS      // print("fs.getSysTypeName() = " + fs.getSysTypeName());      // // 文件系统类型名,比如本地硬盘、光驱、网络文件系统等      // print("fs.getTypeName() = " + fs.getTypeName());      // // 文件系统类型      // print("fs.getType() = " + fs.getType());      // FileSystemUsage usage = null;      // try {      // usage = sigar.getFileSystemUsage(fs.getDirName());      // } catch (SigarException e) {      // if (fs.getType() == 2)      // throw e;      // continue;      // }      // switch (fs.getType()) {      // case 0: // TYPE_UNKNOWN :未知      // break;      // case 1: // TYPE_NONE      // break;      // case 2: // TYPE_LOCAL_DISK : 本地硬盘      // // 文件系统总大小      // print(" Total = " + usage.getTotal() + "KB");      // // 文件系统剩余大小      // print(" Free = " + usage.getFree() + "KB");      // // 文件系统可用大小      // print(" Avail = " + usage.getAvail() + "KB");      // // 文件系统已经使用量      // print(" Used = " + usage.getUsed() + "KB");      // double usePercent = usage.getUsePercent() * 100D;      // // 文件系统资源的利用率      // print(" Usage = " + usePercent + "%");      // break;      // case 3:// TYPE_NETWORK :网络      // break;      // case 4:// TYPE_RAM_DISK :闪存      // break;      // case 5:// TYPE_CDROM :光驱      // break;      // case 6:// TYPE_SWAP :页面交换      // break;      // }   }   public FileSystemUsage getFileSystemUsage(String dirName)         throws SigarException   {      return sigar.getFileSystemUsage(dirName);   }   /**    * 获得网卡Mac地址    *     * @return    * @throws SigarException    */   public Set<String> getMacs() throws SigarException   {      TreeSet<String> treeSet = new TreeSet<String>();      String[] list = sigar.getNetInterfaceList();      for (String string : list)      {         String mac = sigar.getNetInterfaceConfig(string).getHwaddr();         if (mac != null)         {            treeSet.add(mac);         }      }      return treeSet;   }}