在 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# 获取给定路径的完整路径(可以是目录或文件,甚至是完整路径)?