【问题标题】:Java Properties, getting file pathJava 属性,获取文件路径
【发布时间】:2012-03-11 09:26:17
【问题描述】:
logpath = LoggerUtils.getProperties().getProperty("log.path");
System.out.println("logpath: " + logpath);

以上代码返回:

logpath: C:UsersMauriceDesktopLogs

在属性文件中是:

log.path    C:\Users\Maurice\Desktop\Logs

如何保留文件分隔符?我希望它也能在 Linux 上运行,而不仅仅是在 Windows 上。

【问题讨论】:

    标签: java properties filepath


    【解决方案1】:

    其实你需要把这个放到属性文件里:

    log.path    C:\\Users\\Maurice\\Desktop\\Logs
    

    看这个:

    更准确地说是load 方法:

    向下滚动一下,您会看到以下内容:

    该方法不会将无效转义字符之前的反斜杠字符 \ 视为错误;反斜杠被静默删除。例如,在 Java 字符串中,序列“\z”会导致编译时错误。相比之下,这种方法会默默地删除反斜杠。因此,此方法将两个字符序列“\b”视为等效于单个字符“b”。

    反斜杠\ 是一个转义字符,否则会被静默删除。

    【讨论】:

    • 谢谢。 Linux 是否也需要转义?
    • 是的,但我建议始终使用正斜杠 (/) - 这也适用于 Windows:log.path C:/Users/Maurice/Desktop/Logs
    • Bala R 在这里提出了一个很好的建议:stackoverflow.com/a/5785128/1551209 预加载文件的内容并将“\”替换为“\\”我提到这一点是因为我正在使用用户定义的JDBC 连接 URL,我需要保留这些反斜杠。这种方法适用于面临同样困境的其他人:)
    【解决方案2】:

    在属性文件中,您需要使用正斜杠:

    C:/Users/Maurice/Desktop/Logs
    

    或者,转义的反斜杠:

    C:\\Users\\Maurice\\Desktop\\Logs
    

    【讨论】:

      【解决方案3】:

      您需要转义斜杠,因为它们是特殊字符。见:Java Properties backslash

      【讨论】:

        【解决方案4】:

        Java properties file format 规定反斜杠字符 ("\") 会转义后面的字符,因此要获得文字 Windows 路径,您必须具有:

        logpath: C:\\Users\\Maurice\\Desktop\\Logs
        

        但是,Java 会自动为您转换路径分隔符以适应运行时平台,因此您可以通过始终使用正斜杠来避免这种麻烦:

        logpath: C:/Users/Maurice/Desktop/Logs
        

        【讨论】:

          【解决方案5】:

          您可以先将Properties 存储到文件中,然后再次加载它以供使用。 Properties 将负责转义/取消转义任何内容。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-02-13
            • 1970-01-01
            • 2011-10-05
            • 2010-12-02
            • 1970-01-01
            • 2011-06-18
            • 2011-07-14
            • 1970-01-01
            相关资源
            最近更新 更多