2012-07-31 114 views
0

沒有發現財產我有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。

+0

你的問題不清楚給我。 app.property究竟是什麼?屬性文件?系統屬性?屬性在哪裏定義,它在哪裏初始化? – 2012-07-31 06:00:49

+0

編輯。希望這有助於 – 2012-07-31 06:05:37

回答

1

UPDATE:評估你的問題後,再次我明白這一點:你希望得到一個屬性值形成了你自己的財產類。如果該屬性值返回null,則要知道哪個屬性文件包含該鍵並打印出該屬性文件的名稱。

答案就是你不能這樣做。如果您閱讀屬性類的javadoc,那麼只有在放入未知鍵時,get(「KEY_NAME」)方法才返回null。對於空值,您將得到「」,一個空字符串。由於不知道密鑰,它不能在你的任何一個文件中。您無法決定要打印哪個文件名(或者您必須同時打印)。

如果您想對空字符串(「」)進行此操作,您必須在自己的屬性類中添加更多信息。 java.util.Properties類使用散列映射來存儲鍵值對。從文件加載對後,文件的名稱不再可用。所以你需要在某處存儲文件名。

下一個問題是,你從兩個文件加載密鑰到一個哈希映射。一旦進入桌面,你無法決定從哪個文件讀取它們。兩種可能的解決方案:

  1. 您將文件名添加到鍵:如果您在屬性文件本身中執行此操作很容易,但您必須知道文件名以獲取值。
  2. 您對每個文件都擁有一個屬性:那麼當有人要求某個值時,您必須查看兩個屬性。然而,這可以包裹在你的Property類中,所以用戶不知道這一點。
0

從系統級剛拿到屬性:

public class PrintPropery { 
    public static void main(String[] args) { 
     System.out.println(System.getProperty("app.property")); 
    } 
} 
+0

這是在啓動應用程序時完成的。我想在應用程序啓動和工作後知道「app.property」。 Java.util.Properties類不會提供太多信息來獲取「app.property」的名稱。 – 2012-07-31 06:38:40

+0

對不起,我不確定我確切地知道這個問題。你能解釋一下嗎? – qrtt1 2012-07-31 06:49:20

+0

@ qrtt1這裏不清楚你想達到什麼。您是否想要檢索一組屬性鍵的值並將其打印在文件中,或者您想檢查一組屬性鍵的值。 – 2012-07-31 07:04:56