给定以下属性文件,
abc=10
bcd=20
cde=11
def=321
如何获取属性文件的第一个键(在这种情况下abc
)?
您可以使用stringPropertyNames()方法,它返回一个 Set 键。
Properties prop = new Properties();
try {
prop.load(new FileInputStream("config.properties"));
Set<String> keys = prop.stringPropertyNames();
TreeSet<String> sorted = new TreeSet<>(keys);
System.out.println(sorted.iterator().next());//returns abc
} catch (IOException ex) {
ex.printStackTrace();
}
但请记住,对 stringPropertyNames() 的调用会返回一个未排序的 Set,这仅在您的属性文件已排序时才有效。
基本不用java.util.Properties
。这是基于一个没有排序概念的哈希表。
目前尚不清楚上下文是什么,但如果可能,请使用已知键作为“最重要的”或您想要实现的任何内容。
您可以使用以下方法获取键的枚举propertyNames
:
http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#propertyNames ()
但是,API 中没有任何内容可以保证枚举中的第一个将是文件中的第一个。关心属性文件的顺序是相当不寻常的——如果你能解释为什么你想要这个,它可能有助于获得更好的答案。
正如上面 JS 指出的那样,如果你想有秩序感,你不应该使用属性。另一方面,如果您已经在项目中使用/继承它,则此代码将起作用。
public static void main( String[] args )
{
Properties prop = new Properties();
p.load("properties.txt");
try {
//set the properties value
prop.getProperty("abc");
}catch (IOException ex) {
ex.printStackTrace();
}
只需阅读文件:
BufferedReader b = new BufferedReader(new FileReader("Ranjan.properties"));
String line, firstPropertyKey;
// loop ignore initial whitespace
while ((line = b.readLine())!=null && line.trim().equals(""));
// whitespace gone (or end of file reached)
if (line != null) firstPropertyKey = line.split("=")[0].trim();
因为上面的代码对于没有经验的开发者来说比较容易混淆,所以while循环也可以这样写:
while ((line = b.readLine())!=null && line.trim().equals("")) { /*no body*/ }
也就是说,它不需要正文,并且if语句在循环之外。另请注意,WHILE 循环不仅检查条件,而且从文件中读取一行并将其分配给line变量。
你可以试试下面的代码。其他用户提到的枚举不会给您正确的顺序,但是当您想将值从属性文件传递到另一个方法时,此方法很有帮助。例如,另一个方法(值);
try {
File file = new File("jasper.properties");
FileInputStream fileInput = new FileInputStream(file);
Properties properties = new Properties();
properties.load(fileInput);
fileInput.close();
Enumeration enuKeys = properties.keys();
while (enuKeys.hasMoreElements()) {
String key = (String) enuKeys.nextElement();
String value = properties.getProperty(key);
System.out.println(key + ": " + value);
if(value=="10"){
doSomething();
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
key=bond.investment , value=10
key=bond.encashment, value=15
bond.investment=10
bond.encashment=15