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: somepassword
Value: Xj993a==


您的属性文件如下所示:

somepassword=Xj993a==


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


值为Xj993a的somepassword ==
somepassword = Xj993a,值=
somepassword = Xj993a ==具有空值


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

somepassword=Xj993a\=\=


现在清楚地知道哪个是键,哪个是值。

这也可以很容易地写成:

somepassword:Xj993a\=\=


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

关于java - 如何忽略属性文件中出现的反斜杠,例如:和=,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32969315/

10-09 19:08