Java 属性反斜杠
2022-08-31 16:08:32
我正在使用Java属性来读取属性文件。一切正常,但“属性”以静默方式删除反斜杠。
(即)
original: c:\sdjf\slkdfj.jpg
after: c:sdjfslkdfj.jpg
如何使属性不这样做?
我正在使用代码prop.getProperty(key)
我从文件中获取属性,并且我想避免添加双反斜杠
我正在使用Java属性来读取属性文件。一切正常,但“属性”以静默方式删除反斜杠。
(即)
original: c:\sdjf\slkdfj.jpg
after: c:sdjfslkdfj.jpg
如何使属性不这样做?
我正在使用代码prop.getProperty(key)
我从文件中获取属性,并且我想避免添加双反斜杠
正是 Properties.load() 导致了您所看到的问题,因为反斜杠用于特殊目的。
保存键元素对所有数据的逻辑行可以通过使用反斜杠字符 \ 转义行终止符序列,分布在几个相邻的自然行中。
如果您无法使用CoolBeans的建议,那么您可以做的是事先将属性文件读取为字符串,并将反斜杠替换为双反斜杠,然后将其提供给 Properties.load()
String propertyFileContents = readPropertyFileContents();
Properties properties = new Properties();
properties.load(new StringReader(propertyFileContents.replace("\\", "\\\\")));
使用双反斜杠c:\\sdjf\\slkdfj.jpg
Properties props = new Properties();
props.setProperty("test", "C:\\dev\\sdk\\test.dat");
System.out.println(props.getProperty("test")); // prints C:\dev\sdk\test.dat
更新归功于以下@ewh。显然,Windows可以识别前斜杠。所以,我想你可以让你的用户用前斜杠来写它,如果你之后需要反斜杠,你可以做一个替换。我在下面测试了这个片段,它工作正常。
Properties props = new Properties();
props.setProperty("test", "C:/dev/sdk/test.dat");
System.out.println(props.getProperty("test")); // prints C:/dev/sdk/test.dat