Найти, если каталог имеет родительский - PullRequest
0 голосов
/ 01 сентября 2011
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 выдает ошибку?

Как проверить, существует ли родительский каталог для данного каталога?

Обратите внимание, что у меня есть два метода «Включено»:

  • включено (строка)
  • включено (DirectoryInfo dir)

для этой цели вы можете просто предположить, что include (строка s) возвращает false

Ответы [ 3 ]

1 голос
/ 01 сентября 2011
    public static bool ParentDirectoryExists(string dir)
    {
        DirectoryInfo dirInfo = Directory.GetParent(dir);
        if ((dirInfo != null) && dirInfo.Exists)
        {
            return true;
        }
        else
        {
            return false;
        }
    }
1 голос
/ 01 сентября 2011

Исправлено: else if (dir != null && dir.Parent != null)

0 голосов
/ 01 сентября 2011

Вы должны быть в состоянии проверить dir.Parent против null, в соответствии с этим:

Родительский каталог или нулевая ссылка (Ничего в Visual Basic), если путь равен нулю или если путь к файлу обозначает корень (например, "\", "C:" или * "\ server \ share" ).

Проблема в том, что, как уже указывали другие, вы обращаетесь к методу по нулевой ссылке (dir)

Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...