Path 那么路径的正确方向是什么';Windows下的斜杠(/或\)?

Path 那么路径的正确方向是什么';Windows下的斜杠(/或\)?,path,uri,backslash,Path,Uri,Backslash,Windows似乎坚持在文件路径中写入反斜杠\,而.NET的URI类则使用斜杠/写入。即使在最原始的系统中,也有任何正确的方法被接受吗?与其他Windows相比,.NET的URI为什么显示另一个斜杠?Windows使用反斜杠(\)作为文件系统分隔符。对于其他所有内容,都使用正斜杠(/)。Uri类型使用正斜杠,因为正斜杠是如何定义的。文件路径和Uri是不同的\在Windows文件路径中正确,而/在URI中正确 所以这个文件路径:C:\Documents\Foo转换成这个URI:file:///C:

Windows似乎坚持在文件路径中写入反斜杠
\
,而.NET的URI类则使用斜杠
/
写入。即使在最原始的系统中,也有任何正确的方法被接受吗?与其他Windows相比,.NET的URI为什么显示另一个斜杠?

Windows使用反斜杠(
\
)作为文件系统分隔符。对于其他所有内容,都使用正斜杠(
/
)。
Uri
类型使用正斜杠,因为正斜杠是如何定义的。

文件路径和Uri是不同的<代码>\在Windows文件路径中正确,而
/
在URI中正确


所以这个文件路径:
C:\Documents\Foo
转换成这个URI:
file:///C:/Documents/Foo在这方面,Windows是操作系统的私生子,但许多API也会接受正向斜杠。在Windows上,文件路径如下所示:

C:\Users\jsmith\Documents\file.txt
/home/jsmith/Documents/file.txt
在类Unix系统(包括Mac OS X和Linux)上,相同的路径如下所示:

C:\Users\jsmith\Documents\file.txt
/home/jsmith/Documents/file.txt
标准化的URL在,中始终使用前斜杠,与平台无关:

http://home.example.com/Documents/file.txt
原因是历史的。即使是Windows也不能改变我们对URL的看法。当你谈论反斜杠时,你会发现使用反斜杠的唯一平台是Windows(以及其他一些新奇的平台)

您可能会看到除Windows之外使用的反斜杠是UNC路径——但是,Windows也是这些路径的主要支持者:

\\HOMESVR\Documents\file.txt

无论你做什么,都不要为你的网站做广告,说“我的公司.com反斜杠促销”。

网站是基于UNIX的方式,用斜杠(/)在路径中划分目录。Windows使用反斜杠(\)分隔目录

正确的方法取决于它的用途。对于windows计算机上本地文件的路径,请使用反斜杠。对于位于基于UNIX的计算机(包括Mac、Linux)上的web资源或文件的路径,请使用斜杠

NET的URI使用前斜杠的原因是,它的格式是为了在webbrowser中使用


服务器将完成所有必要的工作,将web资源链接到硬盘上的文件。

作为旁注,在谈到.NET时,您应该使用
System.IO.Path.directoryseportorchar
来获取当前路径分隔符。

这是一段历史。当UNIX被创建时,或者应该说是UNICS,他们为目录选择了/作为分隔符。 在过去,存储介质非常小,根目录中的每个目录都是另一个装载的存储设备(/bin/lib等)

当Microsoft发布MS-DOS 1.0版时,它没有目录支持。他们使用/字符作为程序(程序/a/b)的参数

MS-DOS1.0是Q-DOS的一个快速改名,是一个CP/M派生的操作系统,它从中继承了驱动器号(a:C:等)

在以后的版本中,他们希望添加一些目录支持,他们选择使用\因为/在他们的操作系统中已经有了另一种含义

在现代操作系统中有许多计算机历史的产物,我想大多数人都没有意识到这一点,但仍然对它们的工作方式产生重大影响


那么,正确的方法是什么?如果有的话,我会说是/因为在微软在DOS中实现目录支持之前,类UNIX的操作系统就已经存在了。

至于文件系统路径分隔符,我相信在Windows上所有API都会接受正向斜杠(但可能有一些错误不接受)-问题是大多数应用程序不接受它们(或不正确地解析它们)

事实上,如果我没记错的话,即使MS-DOS从开始支持子目录(v2.0)起就接受“/”作为API级别的路径分隔符,但到那时“/”字符已经被确定为命令行选项的“开关”字符,因此反斜杠成为DOS(以及以后的Windows)上的实际路径分隔符

URI与文件路径类似但不同,URI应始终使用“/”分隔组件。Windows应用程序和API可能在URI中接受“\”作为分隔符,这可能是因为人们熟悉在这些系统上使用反斜杠作为分隔符,并且URI也可以用来表示本地文件


当时无用的琐事-在一些早期版本的MS-DOS中,有一个API可以更改命令行选项开关字符(通常从“/”改为“-”),这样命令看起来更像Unix,并且命令可以接受“/”作为命令行上的路径分隔符。API不太成功(我猜是因为应用程序并不普遍支持它),它在以后的版本中被删除了


嗯。。。在二读时,整个答案都是毫无用处的琐事。

\n反斜杠是危险的,因为你需要时刻小心逃跑。许多编程语言都有使用反斜杠进行转义的printf等价物

/Frontslash基本上是无害的


:冒号曾经(在某种程度上现在)被苹果使用。

Windows接受这两种路径


尝试打开Windows资源管理器并键入
C:/Temp/Foo
,将正确打开
C:\Temp\Foo

我可以确认:上面的许多消息都是错误的

  • Windows同时接受
    /
    \

  • Linux只接受
    /


这是因为在Windows下开发PHP时使用的是
/
。它兼容Windows或Linux…

Internet Explorer接受反斜杠而不是斜杠吗?布莱恩:接受,尽管它不正确。请参阅:@Bryan:ie还对(编码的)%40进行了处理,这与rfc所说的正好相反-spec所说/必须是主机与资源之间的分隔符。