zoukankan      html  css  js  c++  java
  • 关于Java获取系统信息

    本文部分转载自: http://www.cnblogs.com/wuhenke/archive/2011/11/19/2255400.html

    我总结的相关类似博客:http://www.cnblogs.com/DreamDrive/p/5760140.html

     一 .获取系统相关参数

      java 通过System.getProperties()获取系统参数

      Properties props=System.getProperties(); //系统属性

     1 public class SystemInfo {
     2     public static void main(String[] args) {
     3         Properties sysProperty=System.getProperties(); //系统属性
     4         Set<Object> keySet = sysProperty.keySet();
     5         for (Object object : keySet) {
     6             String property = sysProperty.getProperty(object.toString());
     7             System.out.println(object.toString()+" : "+property);
     8         }
     9     }
    10 }

    汉语英语一一对应

     1 public class SystemInfo {
     2     public static void main(String[] args) {
     3        System.out.println("Java的运行环境版本:"+sysProperty.getProperty("java.version"));
     4        System.out.println("Java的运行环境供应商:"+sysProperty.getProperty("java.vendor"));
     5        System.out.println("Java供应商的URL:"+sysProperty.getProperty("java.vendor.url"));
     6        System.out.println("Java的安装路径:"+sysProperty.getProperty("java.home"));
     7        System.out.println("Java的虚拟机规范版本:"+sysProperty.getProperty("java.vm.specification.version"));
     8        System.out.println("Java的虚拟机规范供应商:"+sysProperty.getProperty("java.vm.specification.vendor"));
     9        System.out.println("Java的虚拟机规范名称:"+sysProperty.getProperty("java.vm.specification.name"));
    10        System.out.println("Java的虚拟机实现版本:"+sysProperty.getProperty("java.vm.version"));
    11        System.out.println("Java的虚拟机实现供应商:"+sysProperty.getProperty("java.vm.vendor"));
    12        System.out.println("Java的虚拟机实现名称:"+sysProperty.getProperty("java.vm.name"));
    13        System.out.println("Java运行时环境规范版本:"+sysProperty.getProperty("java.specification.version"));
    14        System.out.println("Java运行时环境规范供应商:"+sysProperty.getProperty("java.specification.vender"));
    15        System.out.println("Java运行时环境规范名称:"+sysProperty.getProperty("java.specification.name"));
    16        System.out.println("Java的类格式版本号:"+sysProperty.getProperty("java.class.version"));
    17        System.out.println("Java的类路径:"+sysProperty.getProperty("java.class.path"));
    18        System.out.println("加载库时搜索的路径列表:"+sysProperty.getProperty("java.library.path"));
    19        System.out.println("默认的临时文件路径:"+sysProperty.getProperty("java.io.tmpdir"));
    20        System.out.println("一个或多个扩展目录的路径:"+sysProperty.getProperty("java.ext.dirs"));
    21        System.out.println("操作系统的名称:"+sysProperty.getProperty("os.name"));
    22        System.out.println("操作系统的构架:"+sysProperty.getProperty("os.arch"));
    23        System.out.println("操作系统的版本:"+sysProperty.getProperty("os.version"));
    24        System.out.println("文件分隔符:"+sysProperty.getProperty("file.separator"));   //在 unix 系统中是"/"
    25        System.out.println("路径分隔符:"+sysProperty.getProperty("path.separator"));   //在 unix 系统中是":"
    26        System.out.println("行分隔符:"+sysProperty.getProperty("line.separator"));   //在 unix 系统中是"/n"
    27        System.out.println("用户的账户名称:"+sysProperty.getProperty("user.name"));
    28        System.out.println("用户的主目录:"+sysProperty.getProperty("user.home"));
    29        System.out.println("用户的当前工作目录:"+sysProperty.getProperty("user.dir"));
    30     }
    31 }

     二、获取系统环境变量

      Map<String, String> getenv = System.getenv();

            Map<String, String> getenv = System.getenv();
            System.out.println(getenv);

     输出:

    {USERPROFILE=C:Userskongxiaohan, 
    ProgramData=C:ProgramData, 
    PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC, 
    windows_tracing_logfile=C:BVTBinTestsinstallpackagecsilogfile.log, 
    JAVA_HOME=C:Program FilesJavajdk1.7.0_65, 
    MAVEN_HOME=D:apache-maven-3.0.5, windows_tracing_flags=3, 
    TEMP=C:UsersKONGXI~1AppDataLocalTemp, 
    SystemDrive=C:, ProgramFiles=C:Program Files, 
    Path=C:/Program Files/Java/jdk1.7.0_65/bin/../jre/bin/client;
    C:/Program Files/Java/jdk1.7.0_65/bin/../jre/bin;
    C:/Program Files/Java/jdk1.7.0_65/bin/../jre/lib/i386;
    C:Program FilesNVIDIA CorporationPhysXCommon;
    C:Program FilesJavajdk1.7.0_65in;
    C:Windowssystem32;C:Windows;
    C:WindowsSystem32Wbem;
    C:WindowsSystem32WindowsPowerShellv1.0;
    C:Program FilesEmEditor;
    D:Program FilesMySQLMySQL Server 5.5in;
    D:Program FilesSubversionin;
    D:Program FilesTortoiseSVNin;
    D:ITCASTjavaday72_NoSql系列之mongoDB数据库mongodb-win32-i386-2.4.3in;
    E:insta;tclient_12_1;
    D:apache-maven-3.0.5in;
    C:Program FilesVanDyke SoftwareClients;
    G:eclipse;, HOMEDRIVE=C:, PROCESSOR_REVISION=2502, USERDOMAIN=PC-ACER, ALLUSERSPROFILE=C:ProgramData, VBOX_INSTALL_PATH=C:Program FilesOracleVirtualBox\, PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 2, GenuineIntel, SESSIONNAME=Console, TMP=C:UsersKONGXI~1AppDataLocalTemp, CommonProgramFiles=C:Program FilesCommon Files, =::=::\, LOGONSERVER=\PC-ACER, PROCESSOR_ARCHITECTURE=x86, FP_NO_HOST_CHECK=NO, OS=Windows_NT, HOMEPATH=Userskongxiaohan, PROCESSOR_LEVEL=6, APR_ICONV_PATH=D:Program FilesSubversioniconv, LOCALAPPDATA=C:UserskongxiaohanAppDataLocal, COMPUTERNAME=PC-ACER, windir=C:Windows, SystemRoot=C:Windows, NUMBER_OF_PROCESSORS=4, USERNAME=kongxiaohan, PUBLIC=C:UsersPublic, PSModulePath=C:Windowssystem32WindowsPowerShellv1.0Modules\, NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK, LANG=zh_CN, ComSpec=C:Windowssystem32cmd.exe, APPDATA=C:UserskongxiaohanAppDataRoaming}

    三、获取IP、 计算机名、MAC、 硬盘卷序号

    SystemInfo.java

      1 import java.io.BufferedReader;
      2 import java.io.IOException;
      3 import java.io.InputStreamReader;
      4 import java.net.InetAddress;
      5 import java.net.NetworkInterface;
      6 import java.net.SocketException;
      7 import java.net.UnknownHostException;
      8 import java.util.Properties;
      9 
     10 /**
     11  * 获取当前系统信息
     12  */
     13 public class SystemInfo {
     14     // 当前实例
     15     private static SystemInfo currentSystem = null;
     16     private InetAddress localHost = null;
     17 
     18     private SystemInfo() {
     19         try {
     20             localHost = InetAddress.getLocalHost();
     21         } catch (UnknownHostException e) {
     22             // TODO Auto-generated catch block
     23             e.printStackTrace();
     24         }
     25     }
     26 
     27     /**
     28      * 单例模式获取对象
     29      * 
     30      * @return
     31      */
     32     public static SystemInfo getInstance() {
     33         if (currentSystem == null)
     34             currentSystem = new SystemInfo();
     35         return currentSystem;
     36     }
     37 
     38     /**
     39      * 本地IP
     40      * 
     41      * @return IP地址
     42      */
     43     public String getIP() {
     44         String ip = localHost.getHostAddress();
     45         return ip;
     46     }
     47 
     48     /**
     49      * 获取用户机器名称
     50      * 
     51      * @return
     52      */
     53     public String getHostName() {
     54         return localHost.getHostName();
     55     }
     56 
     57     /**
     58      * 获取C盘卷 序列号
     59      * 
     60      * @return
     61      */
     62     public String getDiskNumber() {
     63         String line = "";
     64         String HdSerial = "";// 记录硬盘序列号
     65 
     66         try {
     67 
     68             Process proces = Runtime.getRuntime().exec("cmd /c dir c:");// 获取命令行参数
     69             BufferedReader buffreader = new BufferedReader(
     70                     new InputStreamReader(proces.getInputStream()));
     71 
     72             while ((line = buffreader.readLine()) != null) {
     73 
     74                 if (line.indexOf("卷的序列号是 ") != -1) { // 读取参数并获取硬盘序列号
     75 
     76                     HdSerial = line.substring(line.indexOf("卷的序列号是 ")
     77                             + "卷的序列号是 ".length(), line.length());
     78                     break;
     79                 }
     80             }
     81 
     82         } catch (IOException e) {
     83             // TODO Auto-generated catch block
     84             e.printStackTrace();
     85         }
     86 
     87         return HdSerial;
     88     }
     89 
     90     /**
     91      * 获取Mac地址
     92      * 
     93      * @return Mac地址,例如:F0-4D-A2-39-24-A6
     94      */
     95     public String getMac() {
     96         NetworkInterface byInetAddress;
     97         try {
     98             byInetAddress = NetworkInterface.getByInetAddress(localHost);
     99             byte[] hardwareAddress = byInetAddress.getHardwareAddress();
    100             return getMacFromBytes(hardwareAddress);
    101         } catch (SocketException e) {
    102             // TODO Auto-generated catch block
    103             e.printStackTrace();
    104         }
    105         return null;
    106     }
    107 
    108     /**
    109      * 获取当前系统名称
    110      * 
    111      * @return 当前系统名,例如: windows xp
    112      */
    113     public String getSystemName() {
    114         Properties sysProperty = System.getProperties();
    115         // 系统名称
    116         String systemName = sysProperty.getProperty("os.name");
    117         return systemName;
    118     }
    119 
    120     private String getMacFromBytes(byte[] bytes) {
    121         StringBuffer mac = new StringBuffer();
    122         byte currentByte;
    123         boolean first = false;
    124         for (byte b : bytes) {
    125             if (first) {
    126                 mac.append("-");
    127             }
    128             currentByte = (byte) ((b & 240) >> 4);
    129             mac.append(Integer.toHexString(currentByte));
    130             currentByte = (byte) (b & 15);
    131             mac.append(Integer.toHexString(currentByte));
    132             first = true;
    133         }
    134         return mac.toString().toUpperCase();
    135     }
    136 }

    SystemInfoTest.java

     1 public class SystemInfoTest {
     2     public static void main(String[] args) {
     3         SystemInfo syso = SystemInfo.getInstance();
     4         System.out.println("IP地址:"+syso.getIP());
     5         System.out.println("主机名称:"+syso.getHostName());
     6         System.out.println("获取C盘卷 序列号"+syso.getDiskNumber());
     7         System.out.println("Mac地址"+syso.getMac());
     8         System.out.println("获取当前系统名称"+syso. getSystemName());
     9     }
    10 }

     输出结果:

    IP地址:169.254.247.195
    主机名称:pc-acer
    获取C盘卷 序列号A0E7-407C
    Mac地址08-00-27-00-90-35
    获取当前系统名称Windows 7

    //================================================================================

    关于获取文件编码相关的属性值:

     1 import java.nio.charset.Charset;
     2 
     3 public class GetDefaultCharset {
     4     public static void main(String[] args) {
     5         // 获取系统默认编码
     6         System.out.println(System.getProperty("file.encoding"));
     7 
     8         // 获取系统默认的字符编码
     9         System.out.println(Charset.defaultCharset());
    10 
    11         // 获取系统默认语言
    12         System.out.println(System.getProperty("user.language"));
    13 
    14         // 获取系统属性列表
    15          System.getProperties().list(System.out);
    16 
    17         // 设置编码
    18          System.getProperties().put("file.encoding", "GBK");
    19     }
    20 }

  • 相关阅读:
    春招已近,这份GitHub万星的ML算法面试大全请收下
    [资源推荐] 必须收藏的两个查找论文和代码实现的网站!
    windows下安装pycocotools,亲测有效!
    GAN原理
    2018-07-02
    虚函数和纯虚函数
    友元
    string字符串
    实参和形参
    C/C++学习笔记汇总
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/4289860.html
Copyright © 2011-2022 走看看