小编典典

文件路径中正斜杠 (/) 和反斜杠 (\\) 之间的区别

all

\我想知道文件路径之间的区别/。我注意到有时路径包含/,有时包含\.

如果有人能解释何时使用\and ,那就太好了/


阅读 89

收藏
2022-08-29

共1个答案

小编典典

/是 Unix 和类 Unix 系统上的路径分隔符。现代 Windows
通常可以同时使用这两种文件路径\并且/可以互换使用,但微软\几十年来一直提倡使用它作为路径分隔符。

这样做的历史原因可以追溯到 1970 年代,比 Windows 早了十多年。一开始,MS-DOS(早期 Windows
的基础)不支持目录。Unix/从一开始就支持使用该字符的目录。然而,当 MS-DOS 2.0 中添加目录时,Microsoft 和 IBM
已经使用该/字符来表示命令开关,并且由于 DOS
的轻量级解析器(源自QDOS,旨在在低端硬件上运行),他们找不到在/不破坏与现有应用程序兼容性的情况下使用字符的可行方法。

因此,为了避免在将文件路径作为参数传递给以下命令时出现“缺少开关”或“无效开关”的错误:

cd/                        <---- no switch specified
dir folder1/folder2        <---- /folder2 is not a switch for dir

\决定改用该字符,因此您可以像这样编写这些命令

cd\
dir folder1\folder2

没有错误。

后来,微软和 IBM 合作开发了一个与 DOS
无关的操作系统,称为OS/2。OS/2
能够同时使用这两种分隔符,这可能会吸引更多的 Unix 开发人员。当Microsoft 和 IBM 在 1990
年分道扬镳时
,Microsoft
采用了他们拥有的代码并创建了Windows NT,所有现代版本的
Windows 都基于它,并带有这种分隔符不可知论。


由于向后兼容性一直是微软从他们进行的所有主要操作系统转换(DOS 到 Win16/DOS,到 Win16/Win32,再到
Win32/WinNT)的游戏名称,这种特性一直存在,并且可能会存在一段时间了。

正是由于这个原因,存在这种差异。它应该对你正在做的事情没有任何影响,因为就像我说的那样,WinAPI
通常可以互换使用它们。但是,如果您在第三方应用程序期望目录名称之间传递 a/时,它们可能会中断。\如果您使用的是 Windows,请坚持使用\.
如果您使用的是 Unix
URI(它们的基础是 Unix
路径,但这完全是另一回事),然后使用/.


在 C# 的上下文中: 应该注意,因为这 技术上是一个 C# 问题,如果你想编写更多在 Unix 和 Windows 上工作的“可移植”C#
代码(即使 C# 主要是一种 Windows
语言),你可能想要使用该Path.DirectorySeparatorChar字段,以便您的代码使用该系统上的首选分隔符,并用于Path.Combine()正确附加路径。

2022-08-29