0

如何在不破坏线条的情况下精确编辑?我有一个文件 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;
}
4

2 回答 2

2

属性文件不遵循与“ini”文件相同的规则,特别是它们转义不同的字符 - 在您的情况下,它在数据中转义冒号和等于。见http://en.wikipedia.org/wiki/.properties

您可以使用ini4j以适当的方式处理文件,或者在保存后自己处理转义。

于 2012-01-08T20:15:19.367 回答
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));
于 2021-08-03T07:06:02.697 回答