查找目录是否具有父级

时间:2011-09-01 13:43:59

标签: c# .net directoryinfo object-reference

private void anotherMethod()
{
    DirectoryInfo d = new DirectoryInfo("D\\:");
    string s = included(d);
     ... // do something with s
}

private string included(DirectoryInfo dir)
{
    if (dir != null)
    {
        if (included(dir.FullName))
        {
            return "Full";
        }
        else if (dir.Parent != null) // ERROR
        {
            if (included(dir.Parent.FullName))
            {
                return "Full";
            }
        }
        ...
    }
    ...
}

上面的代码是我正在使用的,但它不起作用。它抛出一个错误:

  

对象引用未设置为对象的实例

dir.FullPath是B:\所以它没有父级,但为什么dir.Parent!= null会出错?

如何查看给定目录的父目录是否存在?

请注意,我有两个“包含”方法:

  • included(string s)
  • 包含(DirectoryInfo目录)

出于此目的,您可以假设included(string s)返回false

3 个答案:

答案 0 :(得分:1)

修复:else if (dir != null && dir.Parent != null)

答案 1 :(得分:1)

    public static bool ParentDirectoryExists(string dir)
    {
        DirectoryInfo dirInfo = Directory.GetParent(dir);
        if ((dirInfo != null) && dirInfo.Exists)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

答案 2 :(得分:0)

你应该能够根据这个来检查dir.Parent是否为null:

  

如果路径为null或文件路径表示根目录(例如“\”,“C:”或*“\ server \ share”),则为父目录或空引用(在Visual Basic中为Nothing) )。

问题是,就像其他人已经指出的那样,你正在访问空引用(dir)上的方法

Source