我需要使用Windows文件路径对文件执行某些操作,但我收到无效的转义序列错误。
File f = new File("C:\test");
系统只接受“\\”或“/”,但如果我从Windows复制文件路径则为“\”。 我该如何解决这个问题
答案 0 :(得分:4)
使用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 = \
答案 1 :(得分:3)
\
是Java Strings中的转义字符。请改用\\
。
"C:\\test"
解析为字符串C:\test
答案 2 :(得分:1)
您可以使用\\
或/
,但/
更好,因为它与操作系统无关。
使用双反斜杠或单个正斜杠替换路径中的单个反斜杠以解决您的问题。
在内部,Java会将其转换为操作系统的文件分隔符
答案 3 :(得分:1)
File f = new File("C:\\test");
是正确的。
这里没有创建路径为“C:\\ test”的文件。您正在创建一个路径为“C:\ test”的文件。编译程序时发生\\ - to- \转换 - 当程序运行时,双反斜杠消失。
String - String s = "C:\\test";
的相同内容不会创建带有两个反斜杠的字符串,只有一个。
您可以这样想:字符串实际上没有两个反斜杠,但您必须以这种方式编写它以将其放入代码中。
您可能想知道为什么 - 这是因为反斜杠用于在字符串中插入特殊字符。例如,当您在字符串中键入\t
时,它会插入一个选项卡。如果要插入反斜杠,则输入\\t
。
答案 4 :(得分:1)
你可以使用' /' (如在Linux中)自Windows XP以来的路径中,所以忘记\
答案 5 :(得分:-2)
使用java.nio.file.Path
代替java.io
,您的转义序列字符不会出现问题:
import java.nio.file.Path;
import java.nio.file.Paths;
Path path = Paths.get("C:\test");