Java属性,获取文件路径

6
logpath = LoggerUtils.getProperties().getProperty("log.path");
System.out.println("logpath: " + logpath);

上面的代码返回:
logpath: C:UsersMauriceDesktopLogs

在属性文件中:

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

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

5个回答

14

实际上,你需要将这个内容放在属性文件中:

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

参考以下链接:

特别是其中的load方法:

往下滚动一点,你会看到以下内容:

该方法会忽略一个非法转义字符之前的反斜杠字符 \ ,不会报错,而是默默地将反斜杠删除。例如,在 Java 字符串中,序列“\z”会导致编译时错误。相比之下,该方法默默地删除反斜杠并将两个字符序列“\b”视为单个字符 'b'。

反斜杠\是一个转义字符,否则会被默默地忽略。


谢谢。对于Linux,它也需要进行转义吗? - Maurice
是的,但我建议始终使用正斜杠(/) - 这也适用于Windows:log.path C:/Users/Maurice/Desktop/Logs - icyrock.com
Bala R在这里提出了一个好建议:https://dev59.com/e2025IYBdhLWcg3wzpWK#5785128 预加载文件内容并将“\”替换为“\”,我提到这一点是因为我正在使用用户定义的JDBC连接URL,我需要保留这些反斜杠。这种方法对于面临相同困境的其他人也很有效 :) - darkpbj

4

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

C:/Users/Maurice/Desktop/Logs

或者,转义的反斜杠:

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

3

2
Java的属性文件格式规定反斜杠字符(“ \ ”)转义其后面的字符,因此要获取字面上的Windows路径,必须有:
logpath: C:\\Users\\Maurice\\Desktop\\Logs

然而,Java会自动转换路径分隔符以适应运行时平台,因此您可以通过始终使用正斜杠来避免这种麻烦:
logpath: C:/Users/Maurice/Desktop/Logs

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接