如何忽略属性文件中出现的反斜杠,例如:和=

时间:2015-10-06 11:55:31

标签: java properties backslash

private static void createPropertiesFile() {
    Properties prop = new Properties();
    OutputStream output = null;

    try {

        output = new FileOutputStream(
                "c://properties//xyz.properties");

        // set the properties value
        prop.setProperty("URL", hostName);

        prop.store(output, null);

    } catch (IOException io) {
        io.printStackTrace();
    } finally {
        if (output != null) {
            try {
                output.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}

属性文件中的示例数据如下所示。

#Tue Oct 06 15:26:55 IST 2015
URL=jdbc\:sqlserver\://abc.xyz.net

我的理解是先做任何事情" ="首先被视为关键和任何事物" ="被视为价值。在此过程中,当遇到像:和=这样的字符时,会使用反斜杠对其进行转义,' \'。

任何人都可以帮助我如何删除或限制' \'当遇到:和=

时出现在属性文件的第一位

1 个答案:

答案 0 :(得分:1)

这是设计的。属性文件将把=和:视为键/值分隔符。

明确指出哪个部分是关键,哪个部分是' ='和':'如果包含在任一部分中,则必须转义字符。

请考虑以下事项:

Key: somepassword
Value: Xj993a==

您的属性文件如下所示:

somepassword=Xj993a==

不幸的是,关键在哪里,价值在哪里?关键可能是:

  • somepassword,其值为Xj993a ==
  • somepassword = Xj993a,其值为
  • somepassword = Xj993a ==空值

解析这个问题充其量是模棱两可的。现在,如果我们逃脱' ='字符:

somepassword=Xj993a\=\=

现在显而易见,关键是哪个是关键,哪个是价值。

这也很容易写成:

somepassword:Xj993a\=\=

请阅读java.util.Properties.load(java.io.Reader)的文档,了解有关允许转义和解析属性文件语义的更多信息。