在 C# 中使用 / 或 \\ 作为文件夹路径

Posted

技术标签:

【中文标题】在 C# 中使用 / 或 \\\\ 作为文件夹路径【英文标题】:Using / or \\ for folder paths in C#在 C# 中使用 / 或 \\ 作为文件夹路径 【发布时间】:2010-12-31 13:42:33 【问题描述】:

在 C# 中编写文件路径时,我发现我可以编写“C:\”或“C:/”之类的内容并获得相同的路径。推荐哪一个?我在某处听说使用单个 / 比使用 \ 更推荐(使用 \ 作为转义序列)。

【问题讨论】:

感谢 John Saunders 指出这是一个 Windows 问题。我听说使用 / 可以更好地实现交叉兼容性,这在这里无关紧要,因为我的目标是 Windows。 标题中的错误:应该是“/ or \\”,而不是“// or \”。 @sblom- 不确定确切的区别,但由于它有效,所以已修复:p 【参考方案1】:

Windows 支持两种路径分隔符,因此两者都可以使用,至少对于本地路径(/ 不适用于网络路径)。问题是在 Windows 上使用有效但非标准的路径分隔符 (/) 并没有实际好处,尤其是因为您可以使用逐字字符串文字:

string path = @"C:\"  //Look ma, no escape

我可以看到使用 / 分隔符的好处的唯一情况是您将只使用相对路径并且将在 Windows 和 Linux 中使用代码。然后你可以让“../foo/bar/baz”指向同一个目录。但即使在这种情况下,最好离开 System.IO 命名空间(Path.DirectorySeparatorChar、Path.Combine)来处理此类问题。

【讨论】:

你所说的“原始字符串运算符”实际上是“逐字字符串文字”。 @Jay:“逐字字符串文字运算符”?还是只是“逐字字符串文字”? 即使您正在编写要在 posix 和 Windows 上使用的代码,您仍然应该使用正确的代码。有许多(第三方)抽象可以简化此操作,例如 Chromium 中的 path_util。 @jeffamaphone:我同意。这就是我在最后一句话中所说的,但在这种情况下,不需要第三方抽象。 最后一段有一个问题,在不同的操作系统上可能会生成某种文件,例如包含带有目录路径的文本的配置文件,然后在它们之间共享。 Windows 需要使用反斜杠,而 Mac 需要使用正斜杠。【参考方案2】:

请使用Path.DirectorySeparatorChar 或更好,因为Poita 建议使用Path.Combine。

【讨论】:

Path.PathSeparator 是 PATH 环境变量中用于分割路径的字符。在 Windows 上是;。我更新了这个答案以引用DirectorySeparatorChar 糟糕。感谢您的更正,我的意思是发布有关 DirectorySeparatorChar 的信息。【参考方案3】:

我在 C# 中这样写路径:

@"C:\My\Path"

@ 字符关闭 \ 转义。

十年后编辑

.NET 现在可以在 Linux 上运行。在可行的情况下使用Path.Combine(),否则使用Path.DirectorySeparatorChar 来构造一个适合底层操作系统的带有\/ 的路径。

【讨论】:

【参考方案4】:

使用Path.Combine,您无需担心这样的语义。

【讨论】:

Path.Combine 只取2个参数太可惜了。 @MikeCole 从 .NET 4.0 开始,重载通过 params 关键字获取任意数量的参数。【参考方案5】:

这不是 C# 问题 - 这是 Windows 问题。 Windows 中的路径通常用反斜杠显示:C:。在我看来,这就是你应该在 C# 中使用的。使用@"C:\" 防止对反斜杠字符进行特殊处理。

【讨论】:

以上是关于在 C# 中使用 / 或 \\ 作为文件夹路径的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 C# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?

c# 文件操作

C#从文本文件中读取路径说路径不存在[重复]

需要创建 Excel 文件并保存在本地路径中。在 C# MVC 中

C#的文件管理 点击浏览按钮 出现对话框选择文件路径

C#中winform使用相对路径读取文件的方法