I came across a problem using java properties file, and I think, its a good piece to go here. I am sure, majority of the developer who are new to java(even some oldies) may encounter this issue.
The properties file contents:
a0=impl1
a1:sol1=impl2
The java program is below:
public static void main(String[] args) {
Properties properties = new Properties();
try {//Assume, no problemo finding properties file
properties.load(Tester.class.getClassLoader().getResourceAsStream("test.properties"));
System.out.println(properties.getProperty("a0"));
System.out.println(properties.getProperty("a1:sol1"));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Surprisingly the output of the following program is:
a0=impl1
null
When you do properties.list(System.out), I was little surprised to see:
a0=impl1
a1=sol1=impl2
The ':' has been converted to '='.
Finally, with the help of wiki I found that, the name value pairs in the java properties file can be of formats:
a. name=value (This all us know definitely know)b. name:value c. name value
And, the solution is to escape the special character using backslash. That is in the properties file,
a0=impl1
a1\:sol1=impl2
Hope this helps someone who is surprised to see 'un-expected' output.