2011-07-22 56 views
2

所以我想知道如果有人知道我將如何從密鑰中讀取多個值,用逗號分隔它們並將它們從java中的屬性文件存儲到數組列表中?如何在Java中使用屬性文件中的值進行迭代


我有一個屬性與文件只是這在它:

currentProposalsLocation = C:/文件和設置/實習生 項目/提取的項目
keywordsList =「A,B, C,d,E,F」


這是我的代碼加載屬性文件:

static String proposalsDirectory; 
    static ArrayList<String> keywordsList = new ArrayList<String>(); 
    private static final String PROP_FILE="C:/Documents and Settings/Intern Project/ipConfig.properties"; 

public static void readPropertiesFile() 
{ 
    try 
    { 
     InputStream is = XMLTagParser.class.getResourceAsStream(PROP_FILE); 
     Properties prop = new Properties(); 
     prop.load(is); 
     proposalsDirectory = prop.getProperty("currentProposalsLocation"); 
     //?????What to do here???? 
     is.close(); 
    } 
    catch(Exception e) 
    { 
     System.out.println("Failed to read from " + PROP_FILE + " file."); 
    } 
} 

如果有人可以幫助我,我會很感激。

+0

你能否提供樣本輸入文件並描述要求的輸出? – zacheusz

+0

@zacheusz我的代碼上面的兩行是輸入文件中的內容。預期的輸出與我最初指出的完全一樣:只是一個數組列表,其中存儲了所有值。 –

回答

8
keywordsList.addAll(Arrays.asList(prop.getProperty("keywordsList").split(",")); 

應該工作。

+0

正是我在找的東西。非常感謝你! –

3

Properties延伸HashTable執行Map,所以你可以使用keySet()所有的鑰匙作爲Set<String>

任何屬性值都是一個字符串。給定一個分隔符可以分割字符串。

如果你問如何將該對象添加回屬性,答案是「你不能」。屬性使用一個String鍵和一個String值。如果你想要多圖行爲(字符串鍵,列表值),你必須實現你自己的。

+1

等待是這樣的關於迭代鍵或獲取每個逗號分隔值?哈哈 –

+1

問題可以解釋爲詢問兩者。 – duffymo

1

只需要添加另一個選項,您可以將屬性設置爲XML文件,使用Spring Dependency Injection將它們加載到Java代碼中的對象中,然後按照您的要求操作它們。

注意與依賴注入,你可以直接設置列表中向上的XML作爲一個列表,所以你甚至不必做轉向以逗號分隔字符串到列表的所有繁忙的工作。