properties文件的分隔符是 =或者 :
第一次出現的就是分割符,第二次出現的也不需要轉義,也即是(忽略掉[],只是着重描述字符)
[\=] [\:] 或者 [=] [:] 原封不動即可,但是如果有轉義字符 [\] 則需要轉義 [\\]代替
另外需要注意下,英文空格也需要轉義也即[ ]前面添加[\]即爲[\ ]
有些博客認爲這是Properties解析問題,又自行實現個解析,實在是很無所謂
以下爲代碼案例:
test.properties裏的值
a=1=1==36:2:3
b=2:2:2==3=5
c=\3
d=\\4
e= 5
f=\ 6
以下爲測試類
import java.io.IOException;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
public class PropertiesTest {
public static void main(String[] args) throws IOException {
Properties properties=new Properties();
properties.load(PropertiesTest.class.getResourceAsStream("test.properties"));
Iterator<Map.Entry<Object,Object>> it=properties.entrySet().iterator();
Map.Entry<Object,Object> entry=null;
while(it.hasNext()){
entry=it.next();
System.out.println("key:"+entry.getKey()+"___value:"+entry.getValue());
}
}
}
最終打印結果:
key:b___value:2:2:2==3=5
key:a___value:1=1==36:2:3
key:f___value: 6
key:e___value:5
key:d___value:\4
key:c___value:3
很明顯,我們看到
e對應的空格因爲沒有轉義就不見了
f對應的空格有轉義得以保留
d對應的\有轉義\\得以保留
a b等根本第二個及以後的:或=不影響解析
此外,properties裏如果有中文,讀取的時候需要轉換,否則顯示爲亂碼,文件本身爲UTF-8
String companyName= new String(properties.getProperty("company").getBytes("ISO-8859-1"), "UTF-8");
這樣就可以讀取中文