鉴于以下属性文件,
abc=10
bcd=20
cde=11
def=321
如何获取属性文件的第一个键(在本例中为abc
)?
答案 0 :(得分:2)
你可以使用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,这仅在您的属性文件已排序时才有效。
答案 1 :(得分:1)
基本上不要使用java.util.Properties
。这是基于哈希表,没有排序的概念。
目前尚不清楚上下文是什么,但如果可能的话,使用已知的密钥作为“最重要的”或任何你想要实现的目标。
答案 2 :(得分:1)
您可以使用propertyNames
方法获取密钥的枚举:
http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html#propertyNames()
但是,API中没有任何内容可以保证枚举中的第一个将是文件中的第一个。关心属性文件的排序是相当不寻常的 - 如果你能解释为什么要这样做,它可能有助于得到更好的答案。
答案 3 :(得分:0)
作为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();
}
答案 4 :(得分:0)
只需阅读文件:
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 语句 OUTSIDE 循环。另请注意,WHILE循环不仅检查条件,还从文件中读取一行并将其分配给行变量。
答案 5 :(得分:0)
您可以尝试以下代码。其他用户提到的枚举不会给您正确的排序,但是当您想要将属性文件中的值传递给另一个方法时,此方法很有用。例如,anotherMethod(value);
new Person("Loren", 30, 567)
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();
}