コンピュータ内のすべてのディレクトリとサブディレクトリのリストを取得しています。再帰を使用しています。
実際の再帰を実行するまでは問題ありません
このエラーが発生します:
System.NullReferenceException: Object reference not set to an instance of an object.
at tgpwebged.Views.Admin.recursiveFileTree.WalkDirectoryTree(DirectoryInfo root)
in s:\Projects\tgpwebged\tgpwebged\Views\Admin\recursiveFileTree.cs:line 93
これはクラスです:
static void WalkDirectoryTree(System.IO.DirectoryInfo root)
{
System.IO.DirectoryInfo[] subDirs = null;
try
{
DirectoryInfo[] SubDirs = root.GetDirectories("*.*", SearchOption.TopDirectoryOnly);
foreach(DirectoryInfo sdir in SubDirs) {
log.Add(sdir.ToString());
}
}
catch (Exception e)
{
log.Add("Exceção: " + e.ToString());
}
try
{
foreach (System.IO.DirectoryInfo dirInfo in subDirs)
{
log.Add(dirInfo.ToString());
WalkDirectoryTree(dirInfo);
}
}
catch (Exception e)
{
log.Add("Exceção: " + e.ToString());
log.Add("");
}
}
ご覧のとおり、それぞれの最後はdir内のサブディレクトリのリストを取得し、再帰を実行する関数を再度呼び出します。
このクラスは、論理ドライバーからすべての最上位ディレクトリを受け取り、最後のディレクトリ構造に深く入ります。