Java字符串字面值中反斜杠的转义

12

我使用Java已经有一段时间了,遇到了这个问题: 我在Windows中使用硬编码路径,例如

"D:\Java-code\JavaProjects\workspace\eypros\src"

问题在于我需要转义反斜杠字符,以便与字符串一起使用。因此,我手动转义每个反斜杠:

"D:\\Java-code\\JavaProjects\\workspace\\eypros\\src"

有没有一种自动获取未转义路径并返回已转义Java字符串的方法。

我想也许除了Java字符串之外,另一个容器可能能解决这个问题(但我不知道任何一个)。

有什么建议吗?


1
仅使用正斜杠是否有任何缺点? - user432
1
“take”未转义的路径是什么意思?这只是源代码而已 - 如果您有用户输入,就不需要对其进行转义。 - Jon Skeet
Andrei的回答涉及到了许多与系统相关的问题,如果您选择这条路,您将会遇到很多问题(但不是全部)。您有特别的原因要将程序锁定在Windows上吗?个人建议将所有用户文件放在其主目录中,而无需使用任何特定于系统的代码即可获取该目录。 - Richard Tingle
1
JAVA接受斜杠“/”作为跨平台文件分隔符。因此,在Windows平台上使用它是安全的。 - Ravinder Reddy
1个回答

20
public static String escapePath(String path)
{
    return path.replace("\\", "\\\\");
}

在这些字符串中,\ 必须被转义,因此它会被加倍。

无论如何,我认为你应该使用 System.getProperty("file.separator"); 代替 \

此外,java.io.File 还有一些有用的用于文件系统路径的方法。


这段代码可以正常工作。但是这段代码真的需要吗?只有在硬编码路径时才需要转义反斜杠。而且如果你正在硬编码,那么无论如何你都需要手动编码 ""... - Hirak
1
我不知道用户的用例。也许他正在从客户端可以修改的文件中读取这些路径。 - Andrei
2
顺便提一下,如果你使用replaceAll而不是replace,它会给你一个错误。在这里检查原因和解决方案(replaceAll("\\", "\\\\"))[链接]:[link][https://dev59.com/CHI-5IYBdhLWcg3wu7Lv] - Mashrur

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