2013-03-18 132 views
2

我知道,字符串中的屬性可以在被\ n分隔時加載到java.util.Properties中,如下所示。在java中爲Properties.load定義動態分隔符

是否有任何方式來動態提供分隔符例如:我們可以使用逗號(,)作爲分隔符嗎?

String propertiesString = "#Namal=153\nJanith=253\nSameera=135"; 
Properties properties = new Properties(); 
properties.load(new StringReader(propertiesString)); 

回答

1

在將它加載到java.util.Properties中之前,可以使用換行符來標記逗號並將它們加入。下面

示例代碼使用commons-lang並假定你在UNIX換行符(\ n)的

String propStr = "Monday=1,Tuesday=2,Wednesday=3"; 
String[] propsArray = StringUtils.split(propStr, ','); 
Properties properties = new Properties(); 
properties.load(new StringReader(StringUtils.join(propsArray, "\n"))); 
+0

好一個gerrytan。爲此+1。 – namalfernandolk 2013-03-19 03:39:28

+0

或者你也可以只是'propStr = propStr.replace(「,」,「\ n」)'所以你不必'分裂'然後'加入'了。 – 2013-10-04 16:07:34

0

屬性類是用於加載配置的實用程序。

由於\ n是換行符,我只能假定它被選擇爲使屬性文件易於閱讀。

如果你的要求是獲取存儲在一個自定義格式的一些數據可以隨時閱讀和使用Scanner

手動解析CONFIGS或具有良好的架構一個XML配置文件中去。

順便說一句,使用新行作爲分隔符有什麼問題?我只能假設你想使用屬性文件來加載一個不同類型的文件,因爲對於我來說,屬性類的格式在可用性和可讀性方面是非常有意義的。

+0

是的我同意這可以通過令牌化和循環來完成。但我曾嘗試過一種類似於properties.load(新的StringReader(stringToLoad))的解決方案。 – namalfernandolk 2013-03-19 03:42:49

+0

新行非常好。我認爲只有它是足夠的,如果properties.load(新的StringReader(propertiesString));僅專門用於處理文件。但由於它也可以與String一起使用,所以我認爲可以添加動態分隔符也是值得的。 – namalfernandolk 2013-03-19 03:52:09

+0

一條線解決方案不存在,至少不是我所知,除非您創建自己的類。 – Thihara 2013-03-19 03:59:09

1

不,你不能這樣做!而且這不值得,只是做一個字符串。 '\ n'是默認的行分隔符,並且有一個LineReader內部類來定義行讀取操作的邏輯,我不認爲你有機會與它進行交互。

+0

+1表示有一個LineReader內部類,它定義了行讀操作的邏輯 – namalfernandolk 2013-03-19 03:40:11

+0

我認爲它不值得如果properties.load(new StringReader(propertiesString));僅專門用於處理文件。但是因爲它也可以與字符串一起使用。我認爲可以添加動態分隔符也是值得的。 – namalfernandolk 2013-03-19 03:49:45