如何获取属性文件的第一个键

时间:2012-12-06 12:12:48

标签: java properties

鉴于以下属性文件,

abc=10
bcd=20
cde=11
def=321

如何获取属性文件的第一个键(在本例中为abc)?

6 个答案:

答案 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)

这是我的jasper.properties文件

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();
    }