2011-08-10 21 views
1

我正在使用文件屬性文件並通過該文件循環。我怎樣才能得到他們在文件中的序列屬性

Properties Config= new Properties(); 
Config.load(new FileInputStream("c:\\Config.properties")); 
Enumeration e = Config.propertyNames(); 
while (e.hasMoreElements()) 
{ String key = (String) e.nextElement(); 
    System.out.println(key + " -- " + Config.getProperty(key)); 
} 

我在C輸入:\ Config.properties是

輸入

FUN1 = ABC

FUN2 = PQR

FUN3 MNO

輸出

FUN2 - PQR

FUN1 - ABC

FUN3 - MNO

我怎樣才能得到這究竟是什麼在配置文件中。

回答

3

這是不可能的使用java.util.Properties,因爲它延伸java.util.Hashtable這本質上是無序的。

最好的辦法是自己讀取並解析它,例如使用BufferedReaderScanner

我不知道爲什麼排序是如此重要。如果您詳細闡述這一切背後的功能要求,可能會有其他替代方案。根據給定的例子,最近我可以建議你如下:

List<String> funs = new ArrayList<String>(); 

for (int i = 1; i < Integer.MAX_VALUE; i++) { 
    String fun = config.getProperty("fun" + i); 
    if (fun == null) break; 
    funs.add(fun); 
} 

// ... 
+0

感謝您的回覆,我試圖從屬性文件自身傳遞方法 – user885791

+0

我仍然不明白功能要求。無論如何,我編輯了答案,並添加了一個我認爲最適合您的要求的建議。它至少必須給你新的見解。哦,請嘗試尊重[Java命名約定](http://www.oracle.com/technetwork/java/codeconventions-135099.html#367)。變量名稱以小寫字母開頭。 – BalusC

+0

我正在閱讀excel文件,需要逐列執行一些操作,例如。對於第1列,我只需要調用兩個方法,接下來的第7列方法等等。每次這些值都在變化,所以我試圖使它成爲可編輯的 – user885791

1

屬性不是一個有序的地圖,這樣你可能要創建從負載特性SortedMap。這保證了鍵自然排序。但我認爲你想要的訂單是你在屬性文件中指定的。沒有辦法自動完成。你需要自己編寫代碼。

由於BalusC提示使用文件API,打造一雙/元組對象,然後在列表對象中插入或添加它由開始行讀線的SortedMap根據您的使用要求