# Java 系统属性

> 原文： [https://howtodoinjava.com/java/basics/java-system-properties/](https://howtodoinjava.com/java/basics/java-system-properties/)

Java 为其操作维护了一组系统属性。 每个 **java 系统属性**是一个键值（字符串-字符串）对，例如`java.version = "1.7.0_09"`。 您可以通过`System.getProperties()`检索所有系统属性，也可以通过`System.getProperty(key)`检索单个属性。

请注意，Java 安全管理器和策略文件可能会限制对[系统属性](https://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html)的访问。 默认情况下，Java 程序可以不受限制地访问所有系统属性。

```java
Table of Contents

Important Java System Properties
Get System Property
Set System Property
```

## 重要的 Java 系统属性

1.  #### JRE 相关的系统属性

    | | |
    | --- | --- |
    | `java.home` | JRE 主目录，例如“ `C:\Program Files\Java\jdk1.7.0_09\jre` ”。 |
    | `java.library.path` | 用于搜索本机库的 JRE 库搜索路径。 通常但不一定来自环境变量`PATH`。 |
    | `java.class.path` | JRE 类路径，例如`'.'` （点，用于当前工作目录）。 |
    | `java.ext.dirs` | JRE 扩展库路径，例如“ `C:\Program Files\Java\jdk1.7.0_09\jre\lib\ext;C:\Windows\Sun\Java\lib\ext` ”。 |
    | `java.version` | JDK 版本，例如 `1.7.0_09` 。 |
    | `java.runtime.version` | JRE 版本，例如 `1.7.0_09-b05` 。 |

2.  #### 文件相关的系统属性

    | | |
    | --- | --- |
    | `file.separator` | 文件目录分隔符的符号，例如`'d:\test\test.java'`。 对于 Windows，默认值为 `'\'`，对于 Unix / Mac，默认值为`'/'` 。 |
    | `path.separator` | 用于分隔路径条目的符号，例如`PATH`或`CLASSPATH`中的符号。 对于 Windows，默认值为`';'`，对于 Unix / Mac，默认值为`':'`。 |
    | `line.separator` | 行尾（或换行）的符号。 对于 Windows，默认值为`"\r\n"`，对于 Unix / Mac OS X，默认值为`"\n"`。 |

3.  #### 与用户相关的系统属性

    | | |
    | --- | --- |
    | `user.name` | 用户名。 |
    | `user.home` | 用户的主目录。 |
    | `user.dir` | 用户的当前工作目录。 |

4.  #### 与操作系统相关的系统属性

    | | |
    | --- | --- |
    | `os.name` | 操作系统的名称，例如“`Windows 7`”。 |
    | `os.version` | 操作系统的版本，例如“`6.1`”。 |
    | `os.arch` | 操作系统的架构，例如“`x86`”。 |

## 获取系统属性

如前所述，您可以通过`System.getProperties()`获取所有系统属性，也可以通过`System.getProperty(key)`检索单个属性。

```java
import java.util.Properties;
public class PrintSystemProperties 
{
   public static void main(String[] a) 
   {
      // List all System properties
      Properties pros = System.getProperties();
      pros.list(System.out);

      // Get a particular System property given its key
      // Return the property value or null
      System.out.println(System.getProperty("java.home"));
      System.out.println(System.getProperty("java.library.path"));
      System.out.println(System.getProperty("java.ext.dirs"));
      System.out.println(System.getProperty("java.class.path"));
   }
}
```

## 设置系统属性

在 Java 中，可以从命令工具或从 Java 代码本身设置自定义系统属性。

1.  #### 从命令行设置系统属性（`-D`选项）

    ```java
    java -Dcustom_key="custom_value" application_launcher_class
    ```

2.  #### 使用`System.setProperty()`方法从代码设置系统属性

    ```java
    System.setProperty("custom_key", "custom_value");
    ```

这就是本基本教程的全部内容，内容涉及**用 Java** 读写系统属性。

学习愉快！