那么在Windows下,path的斜杠(/或\)的正确方向是什么?

看来Windows坚持要在文件path中写一个反斜杠\ ,而.NET的URI类用斜杠写入它们。 有没有什么正确的方法,甚至在最原始的系统中被接受? 为什么.NET的URI显示其他斜线与其余的Windows相比?

文件path和URI是不同的。 \在Windows文件path中是正确的,而/在URI中是正确的。

所以这个文件path: C:\Documents\Foo转换为这个URI: file:///C:/Documents/Foo

Windows在这方面是操作系统的混蛋,但是很多API也会接受正斜杠。 在Windows上,文件path如下所示:

 C:\Users\jsmith\Documents\file.txt 

在类Unix系统(包括Mac OS X和Linux)上,相同的path如下所示:

 /home/jsmith/Documents/file.txt 

在RFC 1738中标准化的URL 总是使用正斜杠,而不考虑平台:

 http://home.example.com/Documents/file.txt 

原因是历史的。 即使Windows也不能扭转我们对url的想法。 当你谈论反斜杠时,你会发现使用它的唯一平台是Windows(以及其他一些新颖的平台)。

在哪里你可能会看到使用除Windows以外的反斜杠将是UNCpath – 但是,Windows也是这些的主要支持者:

 \\HOMESVR\Documents\file.txt 

不pipe你做什么,都不要为你的网站做一个商业广告,并说“我公司的网站反斜杠推广”。

原因是一小段历史。 在创buildUNIX时,或者我应该说UNICS时,他们select/作为目录的分隔符。 早些时候,存储介质非常小,根目录中的每个目录都是另一个挂载的存储设备(/ bin / lib等)

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

MS-DOS 1.0是Q-DOS的快速重新命名,是一个CP / M派生的操作系统,从它inheritance了驱动器盘符(A:C:等)

在后面的版本中,他们希望添加一些目录支持,他们select使用\因为在他们的操作系统中已经有了另一个含义。

现代操作系统中有许多计算机历史的文物,我想大多数人都没有意识到,但是对它们的工作方式仍然有很大的影响。

那么,什么是正确的方法? 如果有的话,我会说这是因为类似于UNIX的操作系统在微软实现对DOS的目录支持之前。

作为一个方面的说明和.NET,你应该使用System.IO.Path.DirectorySeparatorChar获取当前的path分隔符。

就文件系统path分隔符而言,我相信在Windows上所有的 API都会接受正斜杠(但也许有一些错误的不是) – 问题是大多数应用程序不接受它们(或者错误地parsing它们)。

事实上,如果我记得正确的话,即使MS-DOS从开始支持子目录(v2.0)开始接受“/”作为API级别的path分隔符,但是到那时为止,“/”字符已经被build立为命令行选项的“开关”字符,所以反斜杠变成DOS(以及Windows)上的事实上的path分隔符。

URIs与文件path相似但不同,URI应该总是使用“/”来分隔组件。 Windows应用程序和API可能接受'\'作为URI中的分隔符,可能是因为人们熟悉在这些系统上使用反斜杠作为分隔符,URI也可以用来表示本地文件。


一天中毫无用处的琐事 – 在MS-DOS的一些早期版本中,有一个API来改变命令行选项开关字符(通常是从'/'到' – '),这样命令可以看起来更像Unix,命令会接受'/'作为命令行上的path分隔符。 API是不成功的(我猜是因为它没有得到应用程序的普遍支持),它在后来的版本中被删除。

嗯…在二读,这整个答案是非常无用的琐事。

Windows使用反斜线( \ )作为文件系统分隔符。 对于其他所有内容,使用正斜杠( / )。 Uritypes使用正斜杠,因为这是如何定义统一的资源标识符 。

该网站基于UNIXpath中使用斜杠(/)分隔目录的方式。 Windows用反斜杠(\)分隔目录

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

.NET的URI使用正斜杠的原因是因为它的格式可以在网页浏览器中使用。

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

\反斜杠是危险的,因为你需要小心逃避所有的时间。 许多编程语言都有一个printf等价物,它使用反斜线进行转义。

/前锋大多是无害的。

:冒号是(并且在某种程度上仍然是)被苹果使用。