【问题标题】:How to write multiple line property value using PropertiesConfiguration?如何使用 PropertiesConfiguration 写入多行属性值?
【发布时间】:2012-02-17 01:18:59
【问题描述】:

我有一个带有 List 值(逗号分隔)的属性的属性文件,如何将这个属性写成多行? (逗号后的反斜杠)?

我找不到任何关于这个或至少关于将逗号转义为逗号和反斜杠的信息。

【问题讨论】:

  • 您能否澄清一下,我不确定您要做什么
  • 我有一个具有多行值的属性,例如:key1 = val1,\ val2,\ val3 key2 = hello val1,val2,val3 在单独的行中,但是当 PropertiesConfigurations 将它们写入文件,它会将它们写在一行中
  • 啊,你在说它是怎么写的……好吧

标签: java properties apache-commons-config


【解决方案1】:

如果您的意思如下;这仅依赖于反斜杠+行尾。我刚刚发现它记录在: http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

primes = 2,\
    3,\
    5,\
    7,\
    11

【讨论】:

    【解决方案2】:

    查看User Guide for Properties files

    Special Characters and Escaping:

    如果您需要在换行等属性中使用特殊字符,则 制表或 unicode 字符,您可以使用相同的方式指定它 用于 Java 字符串的转义符号。列表分隔符 ("," by 默认),也可以转义:

    key = This \n string \t contains \, escaped \\ characters \u0020

    反斜杠更难。

    Lists and arrays:

    您可以在属性文件中使用 多行相同的键:

    # chart colors
    colors.pie = #FF0000;
    colors.pie = #00FF00;
    colors.pie = #0000FF;
    

    【讨论】:

      【解决方案3】:

      您需要将内容内的\n 字符和行继续转义符(\<eol> 在行尾)组合起来,以获得实际在属性文件和返回值中表示的多行属性:

      KEY1=first line\n\
      second line\n\
      last line
      KEY2=another key
      

      不确定是否可以将 commons-configuration 配置为实际使用此语法进行编写。

      【讨论】:

        【解决方案4】:

        另一种选择是使用一种旨在支持多行值的属性格式。

        XML 可以很好地处理多行属性,但是噪音很大。

        MProps:是几乎不需要特殊格式的格式示例:https://github.com/mprops/mprops-java

        【讨论】:

          猜你喜欢
          • 2015-10-02
          • 1970-01-01
          • 1970-01-01
          • 2013-11-27
          • 2019-08-19
          • 1970-01-01
          • 2011-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多