Windows中的文件路径的Windows转义序列问题

我需要使用Windows文件路径对文件执行一些操作,但我得到无效的转义序列错误。

File f = new File("C:\test"); 

系统只接受“\\”或“/”,但如果我从Windows复制文件路径,则为“\”。 我怎么能解决这个问题

使用File.seperator代替“\”。

 File f = new File("C:"+File.seperator+"test"); 

File.seperator返回“\”,不会将其视为转义字符。

如果您的文件test.txt保存在文件夹D:/ MyFloder / MyPrograms中,您可以执行以下操作

 File f = new File("D:"+File.seperator+"MyFloder"+File.seperator+"MyPrograms"+File.seperator+"test.txt"); 

编辑

您无需担心操作系统

对于Unix: File.separator = /

对于Windows: File.separator = \

\是Java Strings中的转义字符。 请改用\\

"C:\\test"解析为String C:\test

您可以使用\\//更好,因为它与操作系统无关。

使用双反斜杠或单个正斜杠替换路径中的单个反斜杠以解决您的问题。

在内部,Java会将其转换为操作系统的文件分隔符

File f = new File("C:\\test"); 是正确的。

您没有在此处创建路径为“C:\\ test”的文件。 您正在创建一个路径为“C:\ test”的文件。 编译程序时会发生\\ – to- \转换 – 当程序运行时,双反斜杠消失了。

String – String s = "C:\\test"; 不创建带有两个反斜杠的字符串,只有一个。

您可以这样想:字符串实际上没有两个反斜杠,但您必须以这种方式编写它以将其放入代码中。

您可能想知道为什么 – 这是因为反斜杠用于在字符串中插入特殊字符。 例如,当您在字符串中键入\t ,它会插入一个选项卡。 如果要插入反斜杠,则输入t,键入\\t

你可以在自Windows XP以来的路径中使用’/’(如在Linux中),所以忘了\

使用java.nio.file.Path而不是java.io ,你不会遇到转义序列字符的问题:

 import java.nio.file.Path; import java.nio.file.Paths; Path path = Paths.get("C:\test");