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

How to ignore backslashes appearing in the properties file for characters like : and =

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

我的理解是第一个“=”之前的任何内容都被视为键,第一个“=”之后的任何内容都被视为值。在此过程中,遇到 : 和 = 等字符时,使用反斜杠转义,'\'.

任何人都可以帮助我在遇到 : 和 =

时如何删除或限制“\”出现在属性文件中的第一位

这是设计使然。属性文件会将 = 和 : 视为 key/value 分隔符。

为了明确哪部分是键,哪部分是值,“=”和“:”字符(如果包含在任一部分中)必须进行转义。

考虑以下几点:

Key: somepassword
Value: Xj993a==

您的属性文件将如下所示:

somepassword=Xj993a==

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

  • 一些密码值为 Xj993a==
  • somepassword=Xj993a 值 =
  • somepassword=Xj993a== 为空值

对此的解析充其量是模棱两可的。现在,如果我们转义“=”字符:

somepassword=Xj993a\=\=

现在很清楚哪个是键,哪个是值。

这也可以很容易地写成:

somepassword:Xj993a\=\=

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