Java OS 操作
尽管 Java 的设计理念是“一次编写,到处运行”(Write Once, Run Anywhere),具有很高的平台独立性,但有时我们的应用程序仍然需要与底层的操作系统(OS)进行交互。本章将介绍几种在 Java 中与操作系统进行通信的方式。
系统属性 (System Properties)
系统属性是关于 Java 运行时环境和当前操作系统配置的信息集合。JVM 在启动时会初始化这些属性。您可以通过 System 类来访问它们。
System.getProperties(): 返回一个Properties对象,包含所有的系统属性。System.getProperty(key): 获取指定键(key)的系统属性值。
常见的系统属性键:
环境变量 (Environment Variables)
环境变量是由操作系统维护的动态命名值,它们可以影响正在运行的进程的行为。与系统属性不同,环境变量是独立于 JVM 的,是系统级别的配置。
System.getenv(): 返回一个不可修改的Map<String, String>,包含所有的环境变量。System.getenv(name): 获取指定名称的环境变量的值。
执行外部命令
Java 允许您从应用程序内部执行操作系统的命令。现代 Java 中推荐使用 ProcessBuilder 类,因为它提供了比旧的 Runtime.exec() 方法更多的控制和灵活性。
使用 ProcessBuilder
ProcessBuilder 的基本步骤如下:
- 创建一个
ProcessBuilder实例,并传入命令及其参数。 - (可选)配置工作目录、环境变量、重定向输入/输出流等。
- 调用
start()方法来执行命令,这将返回一个Process对象。 - 通过
Process对象与正在运行的进程交互,例如等待其完成或读取其输出。
使用 ProcessBuilder 可以非常方便地执行系统命令、运行脚本或调用其他命令行工具,从而将 Java 应用程序与更广泛的系统环境集成起来。