我想要实现的是,通过解析文件,获取特定驱动器或文件夹结构中的所有文件的列表。我还试图处理在受保护文件的情况下发生的未授权异常。大多数驱动器和文件夹都很好,但在某些情况下,比如Windows Drive(C :),会抛出System.StackOverflow异常。可能是什么问题?有更好的方法吗?
static void WalkDirectoryTree(System.IO.DirectoryInfo root)
{
System.IO.FileInfo[] files = null;
System.IO.DirectoryInfo[] subDirs = null;
// First, process all the files directly under this folder
try
{
files = root.GetFiles("*.*");
}
// This is thrown if even one of the files requires permissions greater
// than the application provides.
catch (UnauthorizedAccessException e)
{
//eat
}
catch (System.IO.DirectoryNotFoundException e)
{
//eat
}
if (files != null)
{
foreach (System.IO.FileInfo fi in files)
{
Console.WriteLine(fi.FullName);
}
// Now find all the subdirectories under this directory.
subDirs = root.GetDirectories();
foreach (System.IO.DirectoryInfo dirInfo in subDirs)
{
// Resursive call for each subdirectory.
WalkDirectoryTree(dirInfo);
}
}
}
}
答案 0 :(得分:3)
您是否尝试使用调试器来查看正在发生的事情?
听起来像递归,也许有一个NTFS Junction Point指向更高级别。
definition of a StackOverflowException according to MSDN是
执行堆栈溢出时引发的异常 因为它包含太多嵌套方法调用。这堂课不可能 继承的。
这就是为什么我猜这个。系统上的目录结构不可能比执行堆栈允许的调用数更深。