如何在不破坏线条的情况下进行精确编辑?我有一个文件test.ini,我只需要在其上添加一条新记录,然后只修改它。但以下是我现有文件崩溃。
文件:test.ini:
现有正确版本:
myname=C://
field=A=B
修改后变为:
myname=C\://
field=A\=B
newfield=blabla\n
预期产出为:
myname=C://
field=A=B
newfield=blabla
代码:
//import java.util.Properties;
try {
Properties p = new Properties();
p.load(new FileInputStream("/var/tmp/test.ini"));
p.setProperty(key,fieldName);
p.store(new FileOutputStream("/var/tmp/test.ini"), null);
return p.getProperty(fieldName);
} catch(Exception e) {
return null;
}
答案 0 :(得分:2)
属性文件不遵循与“ini”文件相同的规则,特别是它们可以转义不同的字符 - 在您的情况下,它是在数据中转义冒号和等于。见http://en.wikipedia.org/wiki/.properties
您可以使用ini4j以适当的方式处理文件,或者在保存后自行处理转义文件。
答案 1 :(得分:0)
你可以使用ini4j 并且不要忘记使用 Config 来更改写入设置; 例如:
final Ini properties = new Ini();
Config c = new Config();
c.setFileEncoding(UTF_8);
c.setLineSeparator("\n");
c.setEscape(false);// ← here to avoid redundant '\' before ':'
properties.setConfig(c);
properties.load(is);
// do sth
properties.store(Files.newBufferedWriter(propertyPath, UTF_8));