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)返回false
答案 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)上的方法