为了账号安全,请及时绑定邮箱和手机立即绑定

为什么路径是两个//,不是一个/吗

name = name.replace(".","//");

http://img1.sycdn.imooc.com//5a119b160001edab06490466.jpg

正在回答

5 回答

别听他们胡说,为了转义是反斜杠“\\”,两个反斜杠实际代表一个反斜杠“\”。

那为什么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这个类:

http://img1.sycdn.imooc.com//5a126f8a000155b009470228.jpg

http://img1.sycdn.imooc.com//5a126f8a000101ee08080357.jpg

WinNTFileSystem则处理了这些事情。

6 回复 有任何疑惑可以回复我~
#1

嘔翔 提问者

非常感谢!
2017-11-22 回复 有任何疑惑可以回复我~

java这个设计反人类

0 回复 有任何疑惑可以回复我~

重写的findClass好像没被用到,而且我用MyEclispe按老师那样敲的并不会热加载类,把老师在工厂类里用到的loadClass改成findClass会报错


0 回复 有任何疑惑可以回复我~

没有啊 ,感觉一个两个三个都可以

0 回复 有任何疑惑可以回复我~
两个 "//" 是为了转译,直接写 "/" 编译会报错的。


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么路径是两个//,不是一个/吗

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信