从ini文件中读取路径,反斜杠转义字符消失了吗?

时间:2014-07-28 18:06:05

标签: java windows escaping ini ini4j

我正在读取ini文件中的绝对路径名,并将路径名作为String值存储在我的程序中。然而,当我这样做时,以某种方式存储的值似乎正在失去反斜杠,所以路径只是出现了一个大混乱?例如,ini文件的键值为:

key=C:\folder\folder2\filename.extension

并且存储的值将显示为C:folderfolder2filename.extension

在读入之前,有人知道如何逃避键吗?

我们还假设更改ini文件的值不是替代,因为它不是我创建的文件。

2 个答案:

答案 0 :(得分:7)

尝试在Ini4j中将escape属性设置为false。

您可以尝试:

Config.getGlobal().setEscape(false);

答案 1 :(得分:0)

如果您在处理之前阅读了该文件,然后将\翻译为/,那就可以了。所以你正在使用的库有一个方法Ini#load(InputStream),它接收INI文件的内容,如下所示:

byte[] data = Files.readAllBytes(Paths.get("directory", "file.ini");
String contents = new String(data).replaceAll("\\\\", "/");
InputStream stream = new ByteArrayInputStream(contents.getBytes());
ini.load(stream);

处理器必须对反斜杠进行解释,因此这将为其提供带有正斜杠的数据。或者,您可以在处理之前转义反斜杠,如下所示:

String contents = new String(data).replaceAll("\\\\", "\\\\\\\\");