嘔翔
2017-11-19 22:54
name = name.replace(".","//");
别听他们胡说,为了转义是反斜杠“\\”,两个反斜杠实际代表一个反斜杠“\”。
那为什么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则处理了这些事情。
java这个设计反人类
重写的findClass好像没被用到,而且我用MyEclispe按老师那样敲的并不会热加载类,把老师在工厂类里用到的loadClass改成findClass会报错
没有啊 ,感觉一个两个三个都可以
两个 "//" 是为了转译,直接写 "/" 编译会报错的。
Spring Boot热部署
40468 学习 · 78 问题
相似问题