DirectorySeparatorChar和AltDirectorySeparatorChar有什么区别?它们与目录路径有什么关系?

6

System.io.DirectorySeparatorChar返回字符“\”,而System.io.AltDirectorySeparatorChar返回“/”。

更具体地说,System.Io.AltDirectorySeparatorChar的作用是什么,我们何时使用它?


2
更具体地说,System.IO.AltDirectorySeparatorChar的工作是什么?我们何时使用它?该字符的作用是确保在所有时间中,即使是像Windows这样真正偏爱\的操作系统中,/在路径中也可以正常工作。 - mjwills
这回答解决了你的问题吗?为什么有两个目录分隔符? - alelom
2个回答

3

从文档中可以了解到(https://learn.microsoft.com/en-us/dotnet/api/system.io.path.altdirectoryseparatorchar),提供了平台特定的替代字符,用于在路径字符串中分隔反映分层文件系统组织的目录级别。

您可以像使用普通分隔符一样,使用alt分隔符在路径字符串中进行分隔,如下所示:

static void Main(string[] args)
{
        string[] pathStrings =
        {
            @"C:\dir\subdir\file.txt",
            "C:/dir/subdir/file.txt",
            "/dir/subdir/file.txt"
        };

        foreach (var p in pathStrings)
        {
            var dir = Path.GetDirectoryName(p);
            var file = Path.GetFileName(p);
            Console.WriteLine($"{dir} {file}");
        }

}

输出结果如下:

C:\dir\subdir file.txt
C:\dir\subdir file.txt
\dir\subdir file.txt

4
这完全没有回答问题。 - alelom
这并没有解释为什么我们除了AltDirectorySeparatorChar还有DirectorySeparatorChar。实际上,它们与MSDN描述的唯一区别是第二个使用形容词“alternate”,而第一个则没有 - alelom
Windows支持两种分隔符(这在答案中很明显,并在链接的文档中说明),所以我猜他们需要两个属性。 - user3188639

2
我的理解是,DirectorySeparatorChar 是针对特定平台的默认分隔符, 而 AltDirectorySeparatorChar 是针对跨平台的通用分隔符。
在 Windows 中:DirectorySeparatorChar 是反斜杠,AltDirectorySeparatorChar 是正斜杠
在基于 Unix 的系统中:两个都是正斜杠
这是因为 Windows 本地首选反斜杠,但也支持正斜杠,而基于 Unix 的系统仅支持正斜杠。实际上,这意味着你可以使用任何一个。我个人更喜欢 DirectorySeparatorChar,因为我在 Windows 上更喜欢反斜杠。但也许最好的方法是使用 Path.Combine 方法,并让这个方法来决定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接