为什么路径是两个//,不是一个/吗
name = name.replace(".","//");
name = name.replace(".","//");
2017-11-19
别听他们胡说,为了转义是反斜杠“\\”,两个反斜杠实际代表一个反斜杠“\”。
那为什么Java中写正斜杠“/”、“//”、“///”,甚至再多都不会有问题呢?
那是因为Java中处理流,都会使用到File这个类,在Windows环境中,File会使用WinNTFileSystem
这个工具类处理那些问题,再WinNTFileSystem类中,会把所有的正斜杠“/”都处理成反斜杠,再把多余的反斜杠“\”给去掉,最终会表示成转义后的一个反斜杠。
可以测试一下:
public static void main(String[] args) { File file = new File("C:\\\\\\Users///pc//////////Desktop\\工作日志.txt"); System.out.println(file.getAbsolutePath()); }
输出结果为:
C:\Users\pc\Desktop\工作日志.txt
getAbsolutePath()的源代码为:
public String getAbsolutePath() { return fs.resolve(this); }
而这个fs在Windows平台下正是WinNTFileSystem这个类:
WinNTFileSystem则处理了这些事情。
举报