关于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(); //系统属性
public class SystemInfo {
public static void main(String[] args) {
Properties sysProperty=System.getProperties(); //系统属性
Set<Object> keySet = sysProperty.keySet();
for (Object object : keySet) {
String property = sysProperty.getProperty(object.toString());
System.out.println(object.toString()+" : "+property);
}
}
}
汉语英语一一对应
public class SystemInfo {
public static void main(String[] args) {
System.out.println("Java的运行环境版本:"+sysProperty.getProperty("java.version"));
System.out.println("Java的运行环境供应商:"+sysProperty.getProperty("java.vendor"));
System.out.println("Java供应商的URL:"+sysProperty.getProperty("java.vendor.url"));
System.out.println("Java的安装路径:"+sysProperty.getProperty("java.home"));
System.out.println("Java的虚拟机规范版本:"+sysProperty.getProperty("java.vm.specification.version"));
System.out.println("Java的虚拟机规范供应商:"+sysProperty.getProperty("java.vm.specification.vendor"));
System.out.println("Java的虚拟机规范名称:"+sysProperty.getProperty("java.vm.specification.name"));
System.out.println("Java的虚拟机实现版本:"+sysProperty.getProperty("java.vm.version"));
System.out.println("Java的虚拟机实现供应商:"+sysProperty.getProperty("java.vm.vendor"));
System.out.println("Java的虚拟机实现名称:"+sysProperty.getProperty("java.vm.name"));
System.out.println("Java运行时环境规范版本:"+sysProperty.getProperty("java.specification.version"));
System.out.println("Java运行时环境规范供应商:"+sysProperty.getProperty("java.specification.vender"));
System.out.println("Java运行时环境规范名称:"+sysProperty.getProperty("java.specification.name"));
System.out.println("Java的类格式版本号:"+sysProperty.getProperty("java.class.version"));
System.out.println("Java的类路径:"+sysProperty.getProperty("java.class.path"));
System.out.println("加载库时搜索的路径列表:"+sysProperty.getProperty("java.library.path"));
System.out.println("默认的临时文件路径:"+sysProperty.getProperty("java.io.tmpdir"));
System.out.println("一个或多个扩展目录的路径:"+sysProperty.getProperty("java.ext.dirs"));
System.out.println("操作系统的名称:"+sysProperty.getProperty("os.name"));
System.out.println("操作系统的构架:"+sysProperty.getProperty("os.arch"));
System.out.println("操作系统的版本:"+sysProperty.getProperty("os.version"));
System.out.println("文件分隔符:"+sysProperty.getProperty("file.separator")); //在 unix 系统中是"/"
System.out.println("路径分隔符:"+sysProperty.getProperty("path.separator")); //在 unix 系统中是":"
System.out.println("行分隔符:"+sysProperty.getProperty("line.separator")); //在 unix 系统中是"/n"
System.out.println("用户的账户名称:"+sysProperty.getProperty("user.name"));
System.out.println("用户的主目录:"+sysProperty.getProperty("user.home"));
System.out.println("用户的当前工作目录:"+sysProperty.getProperty("user.dir"));
}
}
二、获取系统环境变量
Map<String, String> getenv = System.getenv();
Map<String, String> getenv = System.getenv();
System.out.println(getenv);
输出:
{USERPROFILE=C:\Users\kongxiaohan,
ProgramData=C:\ProgramData,
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC,
windows_tracing_logfile=C:\BVTBin\Tests\installpackage\csilogfile.log,
JAVA_HOME=C:\Program Files\Java\jdk1.7.0_65,
MAVEN_HOME=D:\apache-maven-3.0.5, windows_tracing_flags=3,
TEMP=C:\Users\KONGXI~1\AppData\Local\Temp,
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 Files\NVIDIA Corporation\PhysX\Common;
C:\Program Files\Java\jdk1.7.0_65\bin;
C:\Windows\system32;C:\Windows;
C:\Windows\System32\Wbem;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files\EmEditor;
D:\Program Files\MySQL\MySQL Server 5.5\bin;
D:\Program Files\Subversion\bin;
D:\Program Files\TortoiseSVN\bin;
D:\ITCAST\java\day72_NoSql系列之mongoDB数据库\mongodb-win32-i386-2.4.3\bin;
E:\insta;tclient_12_1;
D:\apache-maven-3.0.5\bin;
C:\Program Files\VanDyke Software\Clients\;
G:\eclipse;, HOMEDRIVE=C:, PROCESSOR_REVISION=2502, USERDOMAIN=PC-ACER, ALLUSERSPROFILE=C:\ProgramData, VBOX_INSTALL_PATH=C:\Program Files\Oracle\VirtualBox\, PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 2, GenuineIntel, SESSIONNAME=Console, TMP=C:\Users\KONGXI~1\AppData\Local\Temp, CommonProgramFiles=C:\Program Files\Common Files, =::=::\, LOGONSERVER=\\PC-ACER, PROCESSOR_ARCHITECTURE=x86, FP_NO_HOST_CHECK=NO, OS=Windows_NT, HOMEPATH=\Users\kongxiaohan, PROCESSOR_LEVEL=6, APR_ICONV_PATH=D:\Program Files\Subversion\iconv, LOCALAPPDATA=C:\Users\kongxiaohan\AppData\Local, COMPUTERNAME=PC-ACER, windir=C:\Windows, SystemRoot=C:\Windows, NUMBER_OF_PROCESSORS=4, USERNAME=kongxiaohan, PUBLIC=C:\Users\Public, PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\, NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK, LANG=zh_CN, ComSpec=C:\Windows\system32\cmd.exe, APPDATA=C:\Users\kongxiaohan\AppData\Roaming}
三、获取IP、 计算机名、MAC、 硬盘卷序号
SystemInfo.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Properties; /**
* 获取当前系统信息
*/
public class SystemInfo {
// 当前实例
private static SystemInfo currentSystem = null;
private InetAddress localHost = null; private SystemInfo() {
try {
localHost = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} /**
* 单例模式获取对象
*
* @return
*/
public static SystemInfo getInstance() {
if (currentSystem == null)
currentSystem = new SystemInfo();
return currentSystem;
} /**
* 本地IP
*
* @return IP地址
*/
public String getIP() {
String ip = localHost.getHostAddress();
return ip;
} /**
* 获取用户机器名称
*
* @return
*/
public String getHostName() {
return localHost.getHostName();
} /**
* 获取C盘卷 序列号
*
* @return
*/
public String getDiskNumber() {
String line = "";
String HdSerial = "";// 记录硬盘序列号 try { Process proces = Runtime.getRuntime().exec("cmd /c dir c:");// 获取命令行参数
BufferedReader buffreader = new BufferedReader(
new InputStreamReader(proces.getInputStream())); while ((line = buffreader.readLine()) != null) { if (line.indexOf("卷的序列号是 ") != -1) { // 读取参数并获取硬盘序列号 HdSerial = line.substring(line.indexOf("卷的序列号是 ")
+ "卷的序列号是 ".length(), line.length());
break;
}
} } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} return HdSerial;
} /**
* 获取Mac地址
*
* @return Mac地址,例如:F0-4D-A2-39-24-A6
*/
public String getMac() {
NetworkInterface byInetAddress;
try {
byInetAddress = NetworkInterface.getByInetAddress(localHost);
byte[] hardwareAddress = byInetAddress.getHardwareAddress();
return getMacFromBytes(hardwareAddress);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
} /**
* 获取当前系统名称
*
* @return 当前系统名,例如: windows xp
*/
public String getSystemName() {
Properties sysProperty = System.getProperties();
// 系统名称
String systemName = sysProperty.getProperty("os.name");
return systemName;
} private String getMacFromBytes(byte[] bytes) {
StringBuffer mac = new StringBuffer();
byte currentByte;
boolean first = false;
for (byte b : bytes) {
if (first) {
mac.append("-");
}
currentByte = (byte) ((b & 240) >> 4);
mac.append(Integer.toHexString(currentByte));
currentByte = (byte) (b & 15);
mac.append(Integer.toHexString(currentByte));
first = true;
}
return mac.toString().toUpperCase();
}
}
SystemInfoTest.java
public class SystemInfoTest {
public static void main(String[] args) {
SystemInfo syso = SystemInfo.getInstance();
System.out.println("IP地址:"+syso.getIP());
System.out.println("主机名称:"+syso.getHostName());
System.out.println("获取C盘卷 序列号"+syso.getDiskNumber());
System.out.println("Mac地址"+syso.getMac());
System.out.println("获取当前系统名称"+syso. getSystemName());
}
}
输出结果:
IP地址:169.254.247.195
主机名称:pc-acer
获取C盘卷 序列号A0E7-407C
Mac地址08-00-27-00-90-35
获取当前系统名称Windows 7
//================================================================================
关于获取文件编码相关的属性值:
import java.nio.charset.Charset; public class GetDefaultCharset {
public static void main(String[] args) {
// 获取系统默认编码
System.out.println(System.getProperty("file.encoding")); // 获取系统默认的字符编码
System.out.println(Charset.defaultCharset()); // 获取系统默认语言
System.out.println(System.getProperty("user.language")); // 获取系统属性列表
System.getProperties().list(System.out); // 设置编码
System.getProperties().put("file.encoding", "GBK");
}
}
关于Java获取系统信息的更多相关文章
- java 获取系统信息及CPU的使用率(转)
java 获取系统信息及CPU的使用率 原文:http://kakaluyi.javaeye.com/blog/211492 最近做个项目,就是要取得cpu占有率等等的系统信息,一开始以为要用动态链接 ...
- JAVA获取系统信息以及系统时间
在做测试的时候,经常需要获取系统信息,并且用获取到的系统时间给生成的报告取名字. 以下代码实在TestNG展示的,没有Test NG的话需要些一个main方法. import java.net.Ine ...
- java获取系统信息
public class SystemInfo { public static void main(String[] args) { //系统属性 Properties prop = System.g ...
- Java获取系统信息(用户目录,临时目录等)
java.version Java运行时环境版本 java.vendor Java运行时环境供应商 java.vendor.url Java供应商的 URL java.home Java安装目录 ja ...
- Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)
1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge ...
- Java获取操作系统信息
今天在看jdk的demo时候发现java获取系统操作系统的一些信息,例如内存使用情况,于是自己也想研究研究! 百度一番,发现有2种方法! 1.sun自带的API 2.第三方jar(Sigar) 先 ...
- java获取当前操作系统的信息
java获取当前操作系统的信息 JavaOS虚拟机UnixEXT 从网上收集的一些关于java获取操作系统信息的方法,现在总结一下: 1获取本机的IP地址: private static Strin ...
- java获取cpu、内存、硬盘信息[转]
http://m.oschina.net/blog/312911 1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sig ...
- 十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
目录 一.jdk工具之jps(JVM Process Status Tools)命令使用 二.jdk命令之javah命令(C Header and Stub File Generator) 三.jdk ...
随机推荐
- homework-04
1.准备工作 本次结对编程我们对项目本身就行了分工,既然是测试来驱动开发,那么我们就把本次工作分成了测试与生成两个部分,小明同学负责生成测试数据,而我写测试程序检测测试结果是否正确,相对来说还是小明同 ...
- 利用red5搭建一个简单的流媒体直播系统
http://blog.sina.com.cn/s/blog_51396f890102exmz.html 一.red5安装.设置. 这个过程就不多说了,参见http://blog.csdn.net/l ...
- URAL 2040 Palindromes and Super Abilities 2 (回文自动机)
Palindromes and Super Abilities 2 题目链接: http://acm.hust.edu.cn/vjudge/contest/126823#problem/E Descr ...
- CodeForces 589D Boulevard (数学,相遇)
题意:给定 n 个的在 x 轴上的坐标,和开始时间,结束坐标,从起点向终点走,如果和其他人相遇,就互相打招乎,问你每人打招乎的次数. 析:其实这一个数学题,由于 n 比较小,我们就可以两两暴力,这两个 ...
- 12个有趣的C语言面试题
摘要:12个C语言面试题,涉及指针.进程.运算.结构体.函数.内存,看看你能做出几个! 1.gets()函数 问:请找出下面代码里的问题: #include<stdio.h> int ma ...
- C#学习笔记(九):LINQ和表达式树
LINQ LINQ:语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许编写C#或者Visual Basic代码以查询数据库相同 ...
- PictureEdit中拖放图片
public partial class Form2 : Form { string fileName = string.Empty; public Form2() { InitializeCompo ...
- C++中用二维数组传参时形参该怎样写[转]
二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写? 要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正 ...
- 序列化对象C++对象的JSON序列化与反序列化探索
新手发帖,很多方面都是刚入门,有错误的地方请大家见谅,欢迎批评指正 一:背景 作为一名C++开发人员,我始终很期待能够像C#与JAVA那样,可以省力的进行对象的序列化与反序列化,但到现在为止,还没有找 ...
- 关于C++与Java中虚函数问题的读书笔记
之前一直用C++编程,对虚函数还是一些较为肤浅的理解.可近期由于某些原因搞了下Java,发现有些知识点不熟,于是站在先驱巨人的肩上谈谈C++与Java中虚函数问题. Java中的虚函数 以下是段别人的 ...