プロパティファイルを読み込み、プロパティファイルの指定されたキーの値を読み込もうとしています。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
は私が小道具にprops.load負荷で最初のprint文のために、すべての3つのプロパティをデバッグしようとしたが、第二と第三の印刷文props.load負荷が小道具にプロパティをゼロにするために:プロパティファイルは次のようになります。
最初のprops.load(ストリーム)は、ファイルの内容全体をプロパティオブジェクトに読み込み、最初のgetValueのプロパティオブジェクト"A"、 "B"、 "C" "プロパティオブジェクトは返されないので、ガベージコレクションされます。次にgetValueを呼び出すと、新しいPropertiesオブジェクトが作成されますが、ストリームがすでにファイルの最後に到達しているため、読み込みには何も残っていません(getValueへの今後の呼び出しでも同様です)。 – Sticks
なぜ、これはとにかく 'Properties'オブジェクトを保存するのではなく、これを行うのでしょうか? – EJP