slash和back slash的区别

之前在写一段小代码的的时候发现,在windows系统下,当需要读取某个文件时,如果直接从"我的电脑"的地址栏里,把地址拷贝过来,代码会报错,说找不到指定的文件。可是linux(带有图形化界面的),直接从地址栏的地址,拷贝过来,放在代码里,就可以按路径找到对应的文件了。

后来我才发现,windows系统里面,地址栏是“\",“反斜杠”这个符号,而linux(unix)下是”/",“斜杠”这个符号。进一步说,如果要在windows下使用“\"作为目录的分隔符,就需要使用”\\",即两个反斜杠。为什么会这样呢?原因稍后讲,下面详细介绍,在计算机领域中,斜杠"/"和反斜杠"\"这两个符号的作用于不同:

图1 windows下文件路径

图2 Linux(unix)下文件路径

斜杠——" / ":

(1)在算术运算中表示除法。

(2)在linux(unix)系统中,1个斜杠,通常表示根目录,多个斜杠,表示目录与目录之间的分隔。

(3)在web的url中,表示路径分割符。也就是分隔路径。

(4)在编程中,主流编程语言的编译器,如果在字符串(通常是url或者路径字符串)中出现了斜杠,都会将其认为是地址或路径分割符。

反斜杠——" \ ":

(1)在Windows中,\ 表示目录中路径的分隔符。

(2)常见的编程语言编译器,从字符串解析的角度,会把"\",看作是转义字符。所谓的转义字符就是,将跟在它后面的字符串结合起来,从而会转化成其他的意义。\n是换行符,\t是水平制表符等等。

(3)用来构成正则表达式里面的一些“非打印字符”。

现在来解释上面的按个问题,为什么代码中C:\Program Files\xxx,找不到文件,而C:\\Program Files\\xxx可以?

如上所述,常见编程语言的编译器中,字符串中的"\",会被理解成转义字符。所以写入内存的字符串中,并没有这个字符,以及在字符后面的字母也会一起转义成其他的字符。所以,必须要使用"\\",通过第一个转义字符,把第二个转义字符转换成路径分割符。通过路径分割符,代码根据路径找到文件。

编程小tips:

无论是在windows还是linux环境下编程,如果没有什么特殊的要求,文件路径统一都使用斜杠"/"作为路径分割符,避免转义字符和反斜杠之间的混淆。

第一篇技术类文章,撒花~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180304G0VQ7X00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券