Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 反斜杠字符查询_Java_Escaping - Fatal编程技术网

Java 反斜杠字符查询

Java 反斜杠字符查询,java,escaping,Java,Escaping,下面是在java中构建目录路径的行 这里,File.separator在windows上是“\”,在Unix上是“/” 如果我硬编码路径,它应该如下所示: File path = new File("C:\\users\\david\\workspace\\JavaCode"); 我的问题: 为什么我们在第二种情况下提到\?这是因为Java中如何定义字符串文本。反斜杠用于某些转义序列(例如“\n”,“\r”和其他),因此文字反斜杠也是转义序列(“\\”) 回到您的代码,但是,不要麻烦,请使用:

下面是在java中构建目录路径的行

这里,
File.separator
在windows上是“\”,在Unix上是“/”

如果我硬编码路径,它应该如下所示:

File path = new File("C:\\users\\david\\workspace\\JavaCode");
我的问题:


为什么我们在第二种情况下提到
\

这是因为Java中如何定义字符串文本。反斜杠用于某些转义序列(例如
“\n”
“\r”
和其他),因此文字反斜杠也是转义序列(
“\\”

回到您的代码,但是,不要麻烦,请使用:

适用于JVM(7+)运行的每个操作系统


它将正确地为您的计算机上的
“C:\\users\\david\\workspace\\JavaCode”
返回
路径,就像为我的计算机上的
“/home/fge/workspace/JavaCode”
返回路径一样。

这是因为Java中如何定义字符串文字。反斜杠用于某些转义序列(例如
“\n”
“\r”
和其他),因此文字反斜杠也是转义序列(
“\\”

回到您的代码,但是,不要麻烦,请使用:

适用于JVM(7+)运行的每个操作系统


它将正确地为您的计算机上的
“C:\\users\\david\\workspace\\JavaCode”
返回
路径,就像它为我的计算机上的
“/home/fge/workspace/JavaCode”
返回路径一样。

因为,对于字符串,
\
是一个转义字符:它表示以一种特殊的方式解释以下字符(这就是为什么
\n
不是
n
)的原因。在您的情况下,您希望
\
本身通过不特殊处理得到特殊解释,因此您需要其中两个:第一个说“特殊处理下一个字符”,下一个字符将被专门处理为
\

,因为对于字符串,
\
是转义字符:它表示以特殊方式解释以下字符(这就是为什么
\n
不是
n
)。在您的情况下,您希望通过不将其视为特殊字符来对
\
本身进行特殊解释,因此您需要其中的两个字符:第一个是“将下一个字符视为特殊字符”,下一个将被专门处理为
\

,因为这就是在字符串中编写单个反斜杠的方式,而硬编码示例不会编译:您将
文件
分配给
类型为
string
@bcsb1001的变量
path
,因为这是在字符串中编写单个反斜杠的方式hat硬编码示例无法编译:您将
文件
分配给
字符串类型的变量
路径
@bcsb1001这是输入错误,但为什么我在使用
文件.separator
时不需要两个反斜杠?您如何知道这不是文件中的内容。separator?您的意思是
S.O.P(File.separator);
实际上有“\\”并在控制台上显示“\”?对于正斜杠
/
,不应该是这种情况,对吗?File.separator的值是适合于该环境的值;/不需要转义(如果您是这样要求的话).但是为什么我在使用
File.separator
时不需要两个反斜杠?你怎么知道那不是File.separator中的内容?你是说
S.O.P(File.separator);
实际上有“\\”并显示“\”在控制台上?对于正斜杠
/
,不应该是这种情况,对吗?File.separator的值是适合该环境的值;/不需要转义(如果您是这样要求的话)。
File path = new File("C:\\users\\david\\workspace\\JavaCode");
final Path path = Paths.get(System.getProperty("user.home"), "workspace",
    "JavaCode");