1. 概述

在处理Java应用时,我们有时需要访问系统属性和环境变量。

在这篇教程中,我们将学习如何从运行中的Java应用程序中获取用户名。

2. System.getProperty()

获取用户信息,特别是其名称的一种方法是使用System.getProperty(String)。这个方法接受一个键作为参数。通常,它们是预定义的并且统一的,如java.versionos.nameuser.home等。在我们的例子中,我们关注的是user.name

String username = System.getProperty("user.name");
System.out.println("User: " + username);

这个方法的一个重载版本System.getProperty(String, String)可以保护我们免受不存在的属性的影响,它会提供一个默认值。

String customProperty = System.getProperty("non-existent-property", "default value");
System.out.println("Custom property: " + customProperty);

除了与预定义系统属性一起工作,此方法还允许我们获取传递给\-D前缀的自定义属性的值。如果我们用以下命令运行应用:

java -jar app.jar -Dcustom.prop=`Hello World!`

在应用程序内部,我们可以使用这个值:

String customProperty = System.getProperty("custom.prop");
System.out.println("Custom property: " + customProperty);

这有助于我们在启动时通过传递值来创建灵活且可扩展的代码库。

此外,还可以使用System.setProperty(),但修改关键属性可能会对系统产生不可预测的影响。

3. System.getenv()

另外,我们也可以使用环境变量来获取用户名。通常,它可以通过USERNAMEUSER:找到:

String username = System.getenv("USERNAME");
System.out.println("User: " + username);

环境变量是只读的,但同时也是获取应用程序运行环境信息的优秀机制。

4. 总结

在这篇文章中,我们讨论了几种获取所需环境信息的方法。环境变量和属性是了解系统的一种便捷方式,同时也有助于使应用程序更加灵活。如常,所有示例可在GitHub上找到。