打印系统属性名称属性文件

没有发现财产我有2个属性文件:打印系统属性名称属性文件

application.properties config.properties

这些fiels的

两个包含它的属性。

我正在通过在IBM Websphere服务器中设置系统属性来加载这些脚本的属性。

在应用程序启动过程中,这两个文件中的所有属性都通过ApplicationProperty.java类加载。

private static Properties applicationProperties = new Properties(); 

readPropertyFileOne(...){

properties.load(new FileInputStream(propertiesLocationOne));

}

readPropertyFileTwo(...){

properties.load(new FileInputStream(propertiesLocationTwo));

}

现在,经过应用程序启动并读取在两个文件中的所有属性。如果我试图通过此代码访问文件中的任何财产

findNonNullableProperty(String aPropertyName){ 

String value = properties.getProperty(aPropertyName);

if(value == null){

//print system property name here. Name can be propertiesLocationOne or propertiesLocationTwo. But what is that? I want to know file location.

}

}

并且它返回null。

回答:

UPDATE:评估你的问题后,再次我明白这一点:你希望得到一个属性值形成了你自己的财产类。如果该属性值返回null,则要知道哪个属性文件包含该键并打印出该属性文件的名称。

答案就是你不能这样做。如果您阅读属性类的javadoc,那么只有在放入未知键时,get(“KEY_NAME”)方法才返回null。对于空值,您将得到“”,一个空字符串。由于不知道密钥,它不能在你的任何一个文件中。您无法决定要打印哪个文件名(或者您必须同时打印)。

如果您想对空字符串(“”)进行此操作,您必须在自己的属性类中添加更多信息。 java.util.Properties类使用散列映射来存储键值对。从文件加载对后,文件的名称不再可用。所以你需要在某处存储文件名。

下一个问题是,你从两个文件加载密钥到一个哈希映射。一旦进入桌面,你无法决定从哪个文件读取它们。两种可能的解决方案:

  1. 您将文件名添加到键:如果您在属性文件本身中执行此操作很容易,但您必须知道文件名以获取值。
  2. 您对每个文件都拥有一个属性:那么当有人要求某个值时,您必须查看两个属性。然而,这可以包裹在你的Property类中,所以用户不知道这一点。

回答:

从系统级刚拿到属性:

public class PrintPropery { 

public static void main(String[] args) {

System.out.println(System.getProperty("app.property"));

}

}

以上是 打印系统属性名称属性文件 的全部内容, 来源链接: utcz.com/qa/264404.html

回到顶部