之前在写一段小代码的的时候发现,在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环境下编程,如果没有什么特殊的要求,文件路径统一都使用斜杠"/"作为路径分割符,避免转义字符和反斜杠之间的混淆。
第一篇技术类文章,撒花~
领取专属 10元无门槛券
私享最新 技术干货