我想加載屬性文件並讀取屬性文件中的給定鍵的值。屬性文件看起來像:java屬性不再加載輸入流的相同的流再次
text.properties
A=Z
B=Y
C=X
public class TestStreams {
static String path = "test.properties";
public static void main(String[] args) throws IOException {
TestStreams test = new TestStreams();
InputStream stream = new FileInputStream(new File(path));
System.out.println(test.getValue(stream, "A"));
System.out.println(test.getValue(stream, "B"));
System.out.println(test.getValue(stream, "C"));
}
public String getValue(InputStream stream, String key) throws IOException {
Properties props = new Properties();
String value = null;
try {
props.load(stream);
value = props.getProperty(key);
} catch (IOException e) {
e.printStackTrace();
}
return value;
}
}
Output :
Z
null
null
我試圖調試,爲第一print語句在props.load加載所有3個屬性爲道具,但對於第二和第三打印語句props.load負荷爲零性質爲道具。
第一props.load(流)是要讀取文件的全部內容爲對象的屬性,並擊中了文件的末尾,以便爲屬性對象第一個的getValue將有「A」,「B」和「C」 」。由於屬性對象沒有被返回,所以它被垃圾回收。下一次調用getValue會創建一個新的Properties對象,但是由於流已經到達文件的末尾,所以沒有剩下任何東西讀入它(以後的任何調用getValue都是一樣的)。 – Sticks
爲什麼你會這樣做,而不是保存'Properties'對象? – EJP