问题
我有一个配置值的键/值对列表,我想存储为Java属性文件,然后加载和迭代。
问题:
- 我是否需要将文件存储在与将加载它们的类相同的包中,或者是否存在应放置它的任何特定位置?
- 文件是否需要以任何特定扩展名结尾或.txt确定?
- 如何在代码中加载文件
- 我怎样才能遍历内部的值?
#1 热门回答(233 赞)
你可以将InputStream传递给Property,因此你的文件几乎可以在任何地方,并且可以调用任何内容。
Properties properties = new Properties();
try {
properties.load(new FileInputStream("path/filename"));
} catch (IOException e) {
...
}
迭代为:
for(String key : properties.stringPropertyNames()) {
String value = properties.getProperty(key);
System.out.println(key + " => " + value);
}
#2 热门回答(76 赞)
- 你可以将文件存储在任何你喜欢的位置。如果要将其保存在jar文件中,则需要使用Class.getResourceAsStream()或ClassLoader.getResourceAsStream()来访问它。如果它在文件系统上,则稍微容易一些。
- 任何扩展都没问题,尽管.properties在我的经验中更常见
- 如果你使用的是Java 6,则使用Properties.load加载文件,传入InputStream或StreamReader。(如果你使用的是Java 6,我可能会使用UTF-8和Reader而不是默认的ISO-8859 -1编码流。)
- 当你遍历普通的Hashtable(属性派生自的)时,迭代它,例如,使用keySet()。或者,你可以使用propertyNames()返回的枚举。
#3 热门回答(25 赞)
如果将属性文件放在与Foo类相同的包中,则可以轻松加载它
new Properties().load(Foo.class.getResourceAsStream("file.properties"))
鉴于Properties扩展了Hashtable,你可以以与Hashtable中相同的方式迭代值。
如果你使用* .properties扩展名,则可以获得编辑器支持,例如Eclipse有一个属性文件编辑器。