为什么DirectoryInfo不提供统一的方法来获取文件夹的合格名称。
在此示例中:
class Program
{
static void Main(string[] args)
{
System.IO.DirectoryInfo DirInfo = new System.IO.DirectoryInfo(@"C:\TEMP\");
Console.WriteLine(DirInfo.FullName);
System.IO.DirectoryInfo DirInfo2 = new System.IO.DirectoryInfo(@"C:\TEMP");
Console.WriteLine(DirInfo2.FullName);
Console.ReadLine();
}
}
无论目录是否存在,FullName都只是将用户输入反映到对象中,但是不能确定您是否获得以“ \”结尾的路径。
在MSDN文档中,提到了FileSystemInfo的继承,在这里可以通过FullPath属性检索FQN,但我似乎无法从DirectoryInfo的实例访问它。
是否有技巧,或者其他方法/字段来确保路径始终具有相同的格式?
答案 0 :(得分:1)
如果不存在结尾的反斜杠,则没有任何方法或方法。它是完全可选的,但如果程序存在或不存在,它也不会对程序有所影响。但是,如果要确保这一点:
char[] blackslashes = {Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar};
string dirPath = @"C:\TEMP";
if (!blackslashes.Contains(dirPath.Last()))
dirPath += "\\";
System.IO.DirectoryInfo dirInfo = new System.IO.DirectoryInfo(dirPath);
答案 1 :(得分:1)
我不确定我是否确实理解了您的问题……但是要使其统一,只需使用例如。 Sanitize
方法。
始终删除尾部反斜杠的示例:
public string SanitizePath(string s) => s.TrimEnd('/', '\\');
始终添加尾部反斜杠的示例:
public string SanitizePath(string s) => s[s.Length - 1] == '/' || s[s.Length - 1] == '\\' ? s : String.Concat(s, '\\');
但是,如果由于不一致导致问题是无效路径,则很可能使用String.Concat
来构建完整路径。
您始终应该使用Path.Combine
来组合路径信息,因为这样可以提供正确的输出。