如何知道java中的属性文件中是否存在属性?
答案 0 :(得分:11)
根据http://java.sun.com/javase/6/docs/api/java/util/Properties.html,如果找不到该属性,则getProperty()
会返回null
。您也可以致电propertyNames()
或stringPropertyNames()
,并查看感兴趣的媒体资源名称是否在返回的集合中。
答案 1 :(得分:10)
另一种选择是利用Properties extends Hashtable<Object,Object>
和使用containsKey
。
答案 2 :(得分:4)
只需加载属性文件,然后尝试获取所需的属性。
public String getProperty(String key)
在此属性列表中搜索具有指定键的属性。如果在此属性列表中找不到该键,则会检查默认属性列表及其默认值(递归)。 如果找不到该属性,则该方法返回null。
答案 3 :(得分:3)
您可以使用hasProperty
AllValues.hasProperty("childList")
答案 4 :(得分:1)
您也可以致电getProperty(String key, String defaultValue)
并检查默认值。
答案 5 :(得分:1)
如果您想在程序开始时检查,可以执行以下操作:
VerifiedProperties
Properties
public final int/String/boolean/etc...
private final String propertyNotValid="Property not valid"
字符串添加到此类private final String propertyNotFound="Property not found"
字符串添加到此类getProperty()
方法。@Deprecated
标记来建议字段的使用。隐藏此方法是不可能的,因为它在Properties类中是公共的。getProperty()
方法初始化构造函数中的所有字段或专用于类型(请参阅下面的示例)处理不同属性类型的示例方法:
@Override @Deprecated /* Deprecated annotation added to suggest usage of the fields. */ public final String getProperty(String key) { String propertyValue = super.getProperty(key); if (propertyValue != null) { return propertyValue; } else { throw new NoSuchFieldError(this.propertyNotFound + " " + key); } } private int getIntegerProperty(String key) { String propertyValue = this.getProperty(key); try { int propertyIntValue = Integer.parseInt(propertyValue); return propertyIntValue; } catch (NumberFormatException e) { throw new NumberFormatException(this.propertyNotValid + " " + key); } } private boolean getBooleanProperty(String key) { String propertyValue = this.getProperty(key); try { boolean propertyBooleanValue = Boolean.parseBoolean(propertyValue); return propertyBooleanValue; } catch (NumberFormatException e) { throw new NumberFormatException(this.propertyNotValid + " " + key); } } private long getLongProperty(String key) { String propertyValue = this.getProperty(key); try { long propertyLongValue = Long.parseLong(propertyValue); return propertyLongValue; } catch (NumberFormatException e) { throw new NumberFormatException(this.propertyNotValid + " " + key); } }
然后你可以创建一个地方:
public static VerifiedProperties properties;
并使用您需要的属性properties.myProperty
String
属性*.properties
文件添加值之外的每个属性,您还需要在构造函数中创建字段并赋值。如果你有很多属性,那么这个文件可能看起来很不愉快。Toggle Rectangular Selection
一次添加public final String
并且类似于多行。*.properties
文件清洁,您可以使用this solution。答案 6 :(得分:1)
crazyscot的答案现在已经过时了。根据新的javadoc,如果该属性不存在,该属性将被创建,
&#34;如果没有当前系统属性集,则首先以与getProperties方法相同的方式创建和初始化一组系统属性&#34;。
答案 7 :(得分:-1)
以下是一些技巧如何找出类路径中存在的某些文件(非强制属性文件)
public class FileUtil {
public static boolean isFileExists(String fileName){
return null != FileUtil.class.getResourceAsStream(fileName);
}
}
当然,它并不总是有效,这取决于课程加载方面