如何在编辑和添加Java时正确使用ini文件,其中读取与ini4j一起使用?

时间:2012-01-08 19:54:29

标签: java linux ini4j

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

2 个答案:

答案 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));