看来Windows坚持要写反斜杠 \ 在文件路径中,而 .NET 的 URI 类用斜杠写入它们 /. 。有没有正确的方法,即使在最原始的系统中也能被接受?与 Windows 的其余部分相比,为什么 .NET 的 URI 显示另一个斜杠?

有帮助吗?

解决方案

一个文件路径和一个URI是不同的。 \是在Windows文件路径正确和/处于URI正确。

因此,这文件路径:C:\Documents\Foo转换为这个URI:file:///C:/Documents/Foo

其他提示

Windows是对此操作系统的私生子,但很多的API将接受斜杠为好。在Windows上,文件路径如下所示:

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

在类似Unix的系统(包括Mac OS X和Linux),相同的路径是这样的:

/home/jsmith/Documents/file.txt

一个URL,在 RFC 1738 标准化,的总是使用正斜线,不管平台的:

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

这样做的原因是历史的。甚至没有Windows可以扭转我们的网址思考。当你在谈论反斜杠,唯一的平台,你会发现使用它们在Windows(和其他一些新奇的)。

您可能会看到反斜线使用Windows以外将UNC路径 - 但是,Windows是这些主要倡导者,以及:

\\HOMESVR\Documents\file.txt

不管你做什么,不要让商业为您的网站,并说:“我公司科网反斜线推广。”

这样做的原因是一小片的历史。当UNIX被创造了,或者我应该说相当UNICS,他们选择了/作为分隔符的目录。 早在天,存储介质是相当小的,并且在每根目录是另一个安装存储装置(如/ bin / lib中等等)

当微软发布MS-DOS 1.0版,它没有目录支持。他们用/字符参数从节目(节目/ A / B)

MS-DOS 1.0,Q-DOS的快速品牌重塑,是一个CP / M导出操作系统,从它继承的驱动器字母(A:C:等)

由于在以后的版本,他们希望增加一些目录的支持,他们选择使用\以来/已经有了自己的操作系统,另外的含义。

有在现代操作系统的计算机历史的许多文物,我想大多数人都没有意识到,但仍然对他们的工作产生了重大影响。

那么,什么是正确的做法?如果有什么,我会说这是/是因为UNIX类操作系统都在那里方式Microsoft在实现目录支持到他们的DOS。

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

至于文件系统路径分隔符走了,我相信,在Windows上的所有的的API将接受正斜杠(但也许有一些越野车那些不) - 问题是,大多数应用程序不接受它们(或不正确地解析它们)。

在事实上,如果正确地记得即使MS-DOS接受“/”作为在API级别路径分隔自从它开始支持子目录(2.0) - 但那时的“/”字符就已经被确立为命令行选项的“开关”的字符,所以反斜杠成了DOS(和以后的Windows)。

事实上的路径分隔

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


一天中的无用的琐事 - 在MS-DOS的某些早期版本中有改变命令行选项开关字符的API(通常从“/”,以“ - ”),这样的命令可以看起来更类Unix和命令将接受“/”作为命令行上的路径分隔符。该API是小于成功(我想,因为它不是普遍由应用程序支持的),并且它在以后的版本中删除。

嗯......二读,这整个的答案是几乎无用的琐事。

Windows使用文件系统定界符反斜杠(\)。对于一切正斜杠被使用(/)。所述Uri类型使用正斜杠,因为这是如何是限定的统一资源标识符。

在网络是基于在一个路径以斜线(/)界定目录的UNIX方式。视窗符用反斜杠目录(\)

在正确的方式取决于它的使用。对于在Windows计算机上的本地文件的路径,使用反斜杠。对于到位于基于UNIX机器上的网络资源或文件的路径(包括苹果电脑,Linux)的,使用斜线。

原因NET的URI使用斜杠是因为它格式化用于在网页浏览器中使用。

服务器将尽一切必要的工作,以链接的网络资源文件在硬盘上。

Windows 接受这两种路径。

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

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

/ FRONTSLASH大多是无害的。

:结肠是(在一定程度仍然是)中使用由苹果

scroll top