\我想知道文件路径之间的区别/。我注意到有时路径包含/,有时包含\.
\
/
如果有人能解释何时使用\and ,那就太好了/。
/是 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()正确附加路径。
Path.DirectorySeparatorChar
Path.Combine()