gpt4 book ai didi

c# - 是否有 C# 方法可以从引用路径中增加或减少文件夹的数量?

转载 作者:行者123 更新时间:2023-11-30 12:46:39 25 4
gpt4 key购买 nike

我正在寻找一套简单的 API 方法,用于确定一个文件夹是否是另一个文件夹的子目录,以及它们之间有多少步骤。像这样的东西:

int numberOfFoldersDown(string parentFolder, string subfolder)  { ... }

它看起来很有用,虽然写起来很乏味,所以我认为它应该在 System.IO.PathSystem.IO.Directory 程序集中的某个地方,但是我在那里找不到任何有用的方法。这些功能是否可用,还是我应该自己编写?

最佳答案

没有内置 AFAIK。

下面是一些同时使用 PathDirectory 方法的递归示例:

internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine(NumberOfFoldersDown(@"c:\temp\", @"c:\temp\")); // 0
Console.WriteLine(NumberOfFoldersDown(@"c:\temp\", @"c:\temp\zz\")); // 1
Console.WriteLine(NumberOfFoldersDown(@"c:\temp2\", @"c:\temp\zz\")); // -1
Console.WriteLine(NumberOfFoldersDown(@"c:\temp2\", @"c:\temp2\zz\hui\55\")); // 3
Console.WriteLine(NumberOfFoldersDown(@"c:\temp2\zz\", @"c:\temp2\zz\hui\55\")); // 2

Console.Read();
}

public static int NumberOfFoldersDown(string parentFolder, string subfolder)
{
int depth = 0;
WalkTree(parentFolder, subfolder, ref depth);
return depth;
}

public static void WalkTree(string parentFolder, string subfolder, ref int depth)
{
var parent = Directory.GetParent(subfolder);
if (parent == null)
{
// Root directory and no match yet
depth = -1;
}
else if (0 != string.Compare(Path.GetFullPath(parentFolder).TrimEnd('\\'), Path.GetFullPath(parent.FullName).TrimEnd('\\'), true))
{
// No match yet, continue recursion
depth++;
WalkTree(parentFolder, parent.FullName, ref depth);
}
}
}

关于c# - 是否有 C# 方法可以从引用路径中增加或减少文件夹的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19318297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com