java Properties文件写入自动转义问题
文件内容:
chartConnectionUrl=jdbc:mysql://localhost/xxx?useUnicode=true&characterEncoding=utf8
dataPass=Rootroot!@#_123
一般写入文件:
Properties pros = new Properties();
pros.store(os,null);
调取以上方法写文件会出现特殊符号自动转义。结果如下:
dataPass=Rootroot\!@\#_123
chartConnectionUrl=jdbc\:mysql\://localhost/xxx?useUnicode\=true&characterEncoding\=utf8
原因:Properties类对特殊符号自动转义。
解决办法:
InputStream is = new FileInputStream("路径");
Properties pros = new Properties();
pros.load(is);
OutputStream os = new FileOutputStream(filePath);
Enumeration<?> e = pros.propertyNames();
//这里不使用Properties的store()方法,因为会被转义
while (e.hasMoreElements()){
String key = (String) e.nextElement();
String value = pros.getProperty(key);
String s = key + "=" + value+"\n";
os.write(s.getBytes());
}
os.flush();
is.close();