如何检查目录1是否是dir2的子目录,反之亦然

sjo*_*urg 18 c# directory directory-structure

什么是检查目录1是否是目录2的子目录的简单方法,反之亦然?

我检查了Path和DirectoryInfo帮助类,但没有找到系统就绪函数.我以为它会在某处.

你们有个想法在哪里找到这个吗?

我自己试着写一张支票,但它比我开始时预期的要复杂得多.

Ste*_*unn 10

在回答问题的第一部分时:"dir1是dir2的子目录吗?",此代码应该有效:

public bool IsSubfolder(string parentPath, string childPath)
{
    var parentUri = new Uri(parentPath);
    var childUri = new DirectoryInfo(childPath).Parent;
    while (childUri != null)
    {
        if(new Uri(childUri.FullName) == parentUri)
        {
            return true;
        }
        childUri = childUri.Parent;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

URIS(在Windows至少,可能会在单声道/ Linux的不同)是不区分大小写.如果区分大小写很重要,请改用Compare方法Uri.


glo*_*pes 8

这是使用Uri类更简单的方法:

var parentUri = new Uri(parentPath);
var childUri = new Uri(childPath);
if (parentUri != childUri && parentUri.IsBaseOf(childUri))
{
   //dowork
}
Run Code Online (Sandbox Code Playgroud)


fle*_*her -11

Parent property在这两种情况下使用 DirectoryInfo 时,您可以将目录 2 与目录 1 进行比较。

DirectoryInfo d1 = new DirectoryInfo(@"C:\Program Files\MyApp");
DirectoryInfo d2 = new DirectoryInfo(@"C:\Program Files\MyApp\Images");

if(d2.Parent.FullName == d1.FullName)
{
    Console.WriteLine ("Sub directory");
}
Run Code Online (Sandbox Code Playgroud)