Java开发中经常用到系统属性值,相关字符集。经常查询,确实很不爽,还要写个代码去看看。贴出来,以后就方便使用了。
获取当前JDK支持的字符集
1
2
3
4
5
6
|
public
static
void
getJDKEncoding() {
SortedMap map = Charset.availableCharsets();
for
(String alias : map.keySet()) {
System.out.println(
"别名:"
+ alias +
"\t字符集对象:"
+ map.get(alias));
}
}
|
别名:alias |
字符集对象:Charset |
Big5 | Big5 |
GBK | GBK |
UTF-8 | UTF-8 |
ISO-8859-1 ...... |
ISO-8859-1 ..... |
一共支持167种之多。
获取当前系统信息
1
2
3
4
5
6
7
8
9
|
/**
* 获取当前系统环境信息
*/
public
static
void
getSystemProperties() {
Properties p = System.getProperties();
for
(Object key : p.keySet()) {
System.out.println(
"名称:"
+ key +
"\t值:"
+ p.get(key));
}
}
|
Key:属性名 | Value:属性值 | 说明 | ||
java.runtime.name | Java(TM) SE Runtime Environment | |||
sun.boot.library.path | C:\Program Files\Java\jdk1.7.0_25\jre\bin | |||
java.vm.version | 23.25-b01 | Java虚拟机版本 | ||
java.vendor.url | http://java.oracle.com/ | 提供商网址 | ||
path.separator | ; | 系统路径分割符Linux是":";曾经栽过。 | ||
java.vm.name | Java HotSpot(TM) Client VM | Java虚拟机名称;还有其他Java虚拟机Sun Classic/ExactVM(世界上第一款商用Java虚拟机),IBMJ9等 | ||
sun.jnu.encoding | GBK | 文件名编码 | ||
java.runtime.version | 1.7.0_25-b17 | |||
java.library.path | 系统环境变量中的值 |
|||
file.separator | \ | 文件目录分割符(Windows下) Linux下(/) |
||
file.encoding | UTF-8 | 文件内容编码 | ||
sun.boot.class.path | C:\Program Files\Java\jdk1.7.0_25\jre\lib\resources.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\rt.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jce.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.7.0_25\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.7.0_25\jre\classes | |||
sun.java.launcher | SUN_STANDARD | |||
java.vm.specification.name | Java Virtual Machine Specification | |||
java.vm.specification.vendor | Oracle Corporation | 提供商 | ||
java.specification.name | Java Platform API Specification | 规格说明书 | ||
sun.management.compiler | HotSpot Client Compiler | |||
java.class.version | 51.0 | 重要,major.minor组成;Class文件版本号 | ||
line.separator | \r | Windows(\r) Liunx(\n) |
||
java.io.tmpdir | C:\Users\ZHANGX~1\AppData\Local\Temp\ | 临时目录 可以设置:
|
||
java.awt.printerjob | sun.awt.windows.WPrinterJob | |||
sun.arch.data.model | 32 | JDK ,JRE的位数(操作系统无关) | ||
sun.cpu.endian | little | 小端模式 | ||
sun.desktop | windows |
下面是一个用户级信息:
Key:属性名 | Value:属性值 | 说明 |
user.country | CN | 国家 |
user.dir | E:\workspace__jsmart\Andvance | 工作目录 |
os.arch | x86 | JRE的系统属性(与操作系统位数无关) |
os.name | Windows 7 | 操作系统 |
os.version | 6.1 | 操作系统内部版本号 |
user.home | C:\Users\Zhang | 用户目录 |
user.timezone | 用户所在的时区 | |
user.name | Zhang | 当前登录系统的用户名 |
user.language | zh | 语言,(和国家信息对应,可在浏览器Internet选项的语言中查找) |
关于“os.arch”该值与操作系统的位数无关,取决于机器安装的JRE位数,参见:
http://www.oracle.com/technetwork/java/javase/downloads/jre-6u25-download-346243.html可以看出JRE是有位数区别的。
参见一篇文章:
Java's "os.arch" System Property is the Bitness of the JRE, NOT the Operating System
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
import
com.sun.servicetag.SystemEnvironment;
public
class
OSArchLies {
public
static
void
main(String[] args) {
// Will say "x86" even on a 64-bit machine
// using a 32-bit Java runtime
SystemEnvironment env =
SystemEnvironment.getSystemEnvironment();
final
String envArch = env.getOsArchitecture();
// The os.arch property will also say "x86" on a
// 64-bit machine using a 32-bit runtime
final
String propArch = System.getProperty(
"os.arch"
);
System.out.println(
"getOsArchitecture() says => "
+ envArch );
System.out.println(
"getProperty() says => "
+ propArch );
}
}
|
上面有些属性值很有让人摸不着的感觉,大多是由于没有深入研究JVM和JRE,已及各自的发展历程,还有就是属性名的起名有有些扰人。
希望各位朋友指定上面问题,待我实验,更正。
本文转自 secondriver 51CTO博客,原文链接:http://blog.51cto.com/aiilive/1250837,如需转载请自行联系原作者