.NET:System.IO.Path

时间:2009-11-07 07:52:48

标签: .net path

给定一个目录字符串,如何确保关闭\字符?例如,C:\foo是一个目录,C:\foo\也是。{1}}。是否有System.IO.Path方法确保结尾为\

4 个答案:

答案 0 :(得分:5)

if (!filename.EndsWith(Path.DirectorySeparatorChar))
    filename += Path.DirectorySeparatorChar;

答案 1 :(得分:3)

大概你想附加一个分隔符,以便随后可以使用字符串连接附加文件名。

在这种情况下,Kyle Rozendo最初的建议是合理的:考虑一下你是否真的需要这样做。如果您始终使用Path.Combine附加文件名,则无需关心路径是否具有尾随分隔符。

如果你仍想这样做,你需要考虑边缘情况。路径“D:”是引用D:驱动器上当前工作目录的有效相对路径。附加分隔符将更改此含义以引用D:驱动器上的根目录。你真的想要这个吗?我猜不是。因此,我会特别注意这一点:

public static string AppendSeparator(string path)
{
    if (path == null) throw new ArgumentNullException("path");
    if (path.Length == 0) return path;
    if (path[path.Length - 1] == Path.VolumeSeparatorChar) return path;
    if (path[path.Length - 1] == Path.DirectorySeparatorChar) return path;
    if (path[path.Length - 1] == Path.AltDirectorySeparatorChar) return path;
    return path + Path.DirectorySeparatorChar;
}

然后您可以按如下方式使用它 - 最后一个示例在添加分隔符之前将输入路径转换为绝对路径:

path = AppendSeparator(@"C:\SomePath\");
path = AppendSeparator(@"C:\SomePath");
path = AppendSeparator(@"D:");
path = AppendSeparator(Path.GetFullPath("D:"));

答案 2 :(得分:0)

干草, 怎么样使用这个条件

if (s.IndexOf('\\') == s.Length - 1)

其中s是你的路径字符串“amr \”将给出真正的“amr”将给出错误的

答案 3 :(得分:0)