C#获取给定路径的文件夹深度的最佳方法?我正在做一些需要遍历文件系统的事情,对于任何给定的路径,我需要知道我在文件夹结构中的“深度”。这是我目前正在使用的:intfolderDepth=0;字符串tmpPath=startPath;while(Directory.GetParent(tmpPath)!=null){folderDepth++;tmpPath=Directory.GetParent(tmpPath).FullName;}返回文件夹深度;这行得通,但我怀疑有更好/更快的方法吗?任何反馈表示赞赏。在我的脑海中:Directory.GetFullPath().Split("\").Length;我来晚了,但我想指出PaulSonier的答案可能是最短的,但应该是:Path.GetFullPath(tmpPath).Split(Path.DirectorySeparatorChar).Length;我一直是递归解决方案的粉丝。效率低下,但很有趣!publicstaticintFolderDepth(stringpath){if(string.IsNullOrEmpty(path))返回0;DirectoryInfoparent=Directory.GetParent(path);如果(父母==空)返回1;返回FolderDepth(parent.FullName)+1;我喜欢用C#编写的Lisp代码!这是我更喜欢的另一个递归版本,可能更有效:publicstaticintFolderDepth(stringpath){if(string.IsNullOrEmpty(path))return0;返回文件夹深度(新目录信息(路径));}publicstaticintFolderDepth(DirectoryInfodirectory){if(directory==null)return0;返回FolderDepth(directory.Parent)+1;好时光,好时光...假设您的路径得到有效审查,在.NET3.5中,您也可以使用LINQ在一行代码中执行此操作...Console.WriteLine(@"C:\Folder1Folder2Folder3Folder4MyFile.txt".Where(c=>c=@"").Count);如果使用Path类的成员,您可以处理路径分隔符的本地化和其他与路径相关的警告。以下代码提供深度(包括根)。它对坏字符串不可靠,但对您来说是一个开始。深度=0;做{路径=Path.GetDirectoryName(路径);控制台.WriteLine(路径);++深度;}while(!string.IsNullOrEmpty(path));Console.WriteLine("Depth="+depth.ToString());如果末尾有反斜杠,将会得到与目录不同的答案。这是解决问题的有力方法。字符串pathString="C:\temp\"varrootFolderDepth=pathString.Split(Path.DirectorySeparatorChar).Where(i=>i.Length>0).Count();这将返回路径长度2。如果没有where语句在没有最后一个定界符的情况下执行此操作,则路径长度为3,如果省略最后一个定界符,则路径长度为2。以上就是C#学习教程:C#获取给定路径文件夹深度的最佳方式?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
