【问题标题】:How to use the ini files correctly while editing and adding in Java, where reading works with ini4j?在 Java 中编辑和添加时如何正确使用 ini 文件,其中使用 ini4j 进行读取?
【发布时间】:2012-01-08 19:54:28
【问题描述】:

如何在不换行的情况下准确编辑?我有一个文件 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;
}

【问题讨论】:

    标签: java linux ini4j


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你可以使用 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));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-17
        • 2014-05-09
        • 2016-11-29
        • 2015-01-26
        • 2017-05-07
        • 1970-01-01
        相关资源
        最近更新 更多