2016-03-04 58 views
3

我知道你可以使用spring來讀取一個屬性,並讀取一個列表中包含值列表的屬性。但是如何將文件中的所有屬性讀入列表?如何使用spring將所有屬性讀入數組?

I.E.

編輯:我們正在閱讀的屬性文件是litterally只是一個值列表,沒有按鍵,像下面的更新例如:

屬性文件

queueName1 
quename2 
queName3 

...等(該文件是像100線長,因此爲什麼它不與一個屬性名稱值)

,然後列表能夠做到像

//Imaginary Code 
@Value("${GET ALL THE LINES}") 
List<String> eachLineOfPropertyFile; 
+0

如何識別鍵和值?你應該像這樣做一些事情http://stackoverflow.com/questions/23506471/spring-access-all-environment-properties-as-a-map-or-properties-object使用列表而不是地圖如果你想 – Pragnani

+0

原來,屬性文件實際上只是一個值列表,沒有鍵 –

+0

我也不想讓這些屬於環境系統級別。基本上只是我們迭代的一些值來部署特定的隊列,並且只在這一個位置使用。還有什麼更像我上面列出的? –

回答

2

你能不能使用下列

List<String> list = Files.readAllLines(new File("propertiesFile").toPath(), Charset.defaultCharset()); 

PS:這是Java 7的

+0

這是我目前的建議,目前他們打開一個'InputStream',然後創建一個'Scanner',然後通過每行將其放入列表中。我知道將列表中的屬性列入列表的能力,但只是想知道是否可以壓縮這個更多 –

+0

Sprint屬性源類提供了名稱/值屬性對的來源。底層的源對象可以是封裝屬性的任何類型的T。示例包括Properties對象,Map對象,ServletContext和ServletConfig對象(用於訪問init參數)。 – Learner

+1

如果您擔心只是精簡而未準備將屬性更改爲鍵/值對,那麼上面的代碼是一個不錯的選擇。無論如何,這是一個單線的變化。 – Learner

3

的一部分,如果你想使用Spring獨自一人,然後分隔每個使用值的做「」在屬性文件並利用spring EL。

屬性文件將是這樣的:

property.values=queueName1,quename2,queName3 

而且隨着春天價值詮釋

@Value("#{'${property.values}'.split(',')}") 
List<String> eachLineOfPropertyFile; 
+0

是的,我正在考慮這個,但它的一個大項目,讓團隊改變屬性文件可能是2個月的努力,我不想花大聲笑。這更像是「如果存在,它會很酷,是嗎?」題。除了單獨閱讀每行代碼之外,我現在的代碼更改是使用apache FileUtils一次讀取所有行來執行上述建議 –

相關問題