【问题标题】:Read properties file in java having particular string读取具有特定字符串的java中的属性文件
【发布时间】:2014-06-23 23:48:40
【问题描述】:

我正在使用一个.properties 文件。我有以下配置参数:

Appnameweb = app1
Appnamemobile = app2
Appnameweb1 = app3

用户提供的以 Appname 开头的配置参数可以有很多。 如何读取所有属性文件参数,其中键将包含特定字符串,如本例中的 Appname?

【问题讨论】:

  • 你是如何读取属性文件的?

标签: java properties-file


【解决方案1】:
Properties props = new Properties();
props.load(new FileInputStream("file.properties"));
Enumeration<String> e = props.getNames();
List<String> values = new ArrayList<String>();
while(e.hasMoreElements()) {
    String param = (String) e.nextElement();
    if(param != null && param.contains("Appname")) { 
         values.add(props.getProperty(param));
    }   
}

【讨论】:

    【解决方案2】:

    一般看java.util.Properties的javadoc。为了让你的生活更轻松,我会给你这个代码 sn-p 可以帮助你开始:

    Properties props = new Properties();
    props.load(new FileInputStream("myfile.properties"));
    for (Enumeration<?> e = props.propertyNames(); e.hasMoreElements(); ) {
        String name = (String)e.nextElement();
        String value = props.getProperty(name);
        // now you have name and value
        if (name.startsWith("Appname")) {
            // this is the app name. Write yor code here
        }
    }
    

    【讨论】:

    • 谢谢。完美答案
    • @AlexR 枚举 e = props.getNames();给出一个错误。 getNames() 给出cannot find symbol
    • @Nina, getNames()Properties 类中确实不存在。我使用了现有的方法propertyNames(),不知道你在哪里找到getNames()
    【解决方案3】:

    如果你使用的是 java Properties,那么你可以在这行做一些事情。

    1. 使用Properties#keySet() 方法获取密钥的Set&lt;Object&gt;
    2. 启动for 循环,并为密钥集中的每个对象,通过强制转换或使用toString() 方法将Object 转换为String
    3. 使用转换后的字符串,根据需要使用String#contains()String#startsWith()方法检查它是否包含公共字符串“Appname”。
    4. 如果是,请使用 Properties#getProperty() 方法获取该键的值,然后对值执行任何操作。

    【讨论】:

      【解决方案4】:
      Properties prop = new Properties();
          try {
              prop.load(this.getClass().getClassLoader().getResourceAsStream("filename.properties"));
              Set<Object> set = prop.keySet();
      
              for(Object obj : set){
                  String str = obj.toString();
                  if(str.startsWith("Appname")) {
                      //System.out.println("");
                  }
              }
      

      【讨论】:

        猜你喜欢
        • 2011-05-13
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-11
        相关资源
        最近更新 更多