作者:李桂平2402851397 | 2023-09-02 15:34
我正在研究需要遍历文件系统的东西,对于任何给定的路径,我需要知道我在文件夹结构中的"深度".这是我目前正在使用的:
int folderDepth = 0;
string tmpPath = startPath;
while (Directory.GetParent(tmpPath) != null)
{
folderDepth++;
tmpPath = Directory.GetParent(tmpPath).FullName;
}
return folderDepth;
这有效,但我怀疑有更好/更快的方式?很有必要提供任何反馈意见.
1> Paul Sonier..:
脱离我的头顶:
Directory.GetFullPath().Split("\\").Length;
对于其他有效的序列,例如C:\ Folder\..\boot.ini,将被破坏.或者,对于UNC网络路径,例如\\ server\share\file.并且,您应该使用Path.DirectorySeperatorCharacter和Path.AltDirectorySeperatorCharacter.
@Joey:我认为你的意思是[`System.IO.Path.DirectorySeparatorChar`](https://msdn.microsoft.com/en-us/library/system.io.path.directoryseparatorchar(v = vs.110). ASPX).有点令人困惑的是,[`System.IO.Path.PathSeparator`](https://msdn.microsoft.com/en-us/library/system.io.path.pathseparator%28v=vs.110%29.aspx)指的是到环境变量中的separator _between_ paths,例如`%PATH%`.
@ mklement0:你是对的。令人惊讶的是,在过去的八年中,没有人去纠正它。
2> GôTô..:
我迟到了,但我想指出Paul Sonier的回答可能是最短的,但应该是:
Path.GetFullPath(tmpPath).Split(Path.DirectorySeparatorChar).Length;