我正在加载属性文件并从该文件中获取值但是当我使用“属性”类和 getProperty(键)方法时,它返回 null value。
代码:
public class LoadPropertiesFile {
public static String getProperty (String key, String filePath) {
Properties properties = new Properties();
InputStream inputStream = null;
String value = null;
try {
String appHome = ConfigUtil.getApplicationHome() + filePath;
inputStream = new FileInputStream(appHome);
//load a properties file
properties.load(inputStream);
//get the property value
System.out.println(properties.getProperty("7")); //print **Unlock**
System.err.println(key); //print **7**
System.out.println(value); //print **null**
value = properties.getProperty(key);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch(IOException e) {
e.printStackTrace();
}
}
}
return value;
}
}
输出:
Unlock
7
null
属性文件:
2=Interactive
3=Network
4=Batch
5=Service
7=Unlock
8=Network Cleartext
10=Remote Desktop
11=Logon with cached credentials
通话方法:
logonType = new LoadPropertiesFile().getProperty("7", "path");
当我调用该方法时,它将仅返回 null 值。请帮帮我们。
答案 0 :(得分:3)
您正在使用null进行初始化。
String value = null;
然后在>>打印之后将其分配:
System.out.println(value);
value = properties.getProperty(key);
输出: null
因此,在打印时,值只能为null,因为在System.out.println(value);
之前永远不会更改其值。
只需切换这两个陈述:
value = properties.getProperty(key);
System.out.println(value);
输出: unlock
修改强>
properties.getProperty(key)也可以返回null,但前提是它的表中没有这样的键,否则它将返回指定的值,在你的示例unlock
中。
有关详细信息,请参阅API文档:
public String getProperty(String key)
在此属性列表中搜索具有指定键的属性。如果找不到密钥 此属性列表,默认属性列表及其默认值, 然后检查递归。如果属性,该方法返回null 找不到。
http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#getProperty(java.lang.String)
答案 1 :(得分:1)
System.out.println(value); //print **null**
value = properties.getProperty(key);
切换这两行并在 打印之前初始化value
:
value = properties.getProperty(key);
System.out.println(value); //print Unlock