C# 通过目录结构进行分析时System.StackOverflow异常
我试图实现的是,通过解析文件来获取特定驱动器或文件夹结构中所有文件的列表。我还试图处理受保护文件发生的未经授权的异常。该代码在大多数驱动器和文件夹中运行良好,但在某些情况下,如Windows驱动器(C:),引发System.StackOverflow异常。可能是什么问题?有更好的方法吗C# 通过目录结构进行分析时System.StackOverflow异常,c#,.net,file,exception,directory,C#,.net,File,Exception,Directory,我试图实现的是,通过解析文件来获取特定驱动器或文件夹结构中所有文件的列表。我还试图处理受保护文件发生的未经授权的异常。该代码在大多数驱动器和文件夹中运行良好,但在某些情况下,如Windows驱动器(C:),引发System.StackOverflow异常。可能是什么问题?有更好的方法吗 static void WalkDirectoryTree(System.IO.DirectoryInfo root) { System.IO.FileInfo[] files = nul
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);
}
}
}
}
您是否尝试过使用调试器查看发生了什么 听起来像是递归,也许有一个指向更高层次的地方 问题是 执行堆栈溢出时引发的异常 因为它包含太多嵌套方法调用。该类不能为空 继承的
所以这就是为什么我猜。系统上的目录结构不太可能比执行堆栈允许的调用数更深。您是否尝试过使用调试器查看发生了什么 听起来像是递归,也许有一个指向更高层次的地方 问题是 执行堆栈溢出时引发的异常 因为它包含太多嵌套方法调用。该类不能为空 继承的
所以这就是为什么我猜。系统上的目录结构不太可能比执行堆栈允许的调用数更深。递归中的递归:)我能做些什么来解决这个问题?或者有其他方法吗?首先,验证确实如此。然后转到google。也许先读这篇文章:)递归中的递归:)我能做些什么来解决这个问题?或者有其他的方法吗?首先,验证它确实是这样。然后去谷歌你去。不过,可能先阅读本文:)如果您只想列出目录树中任何位置的所有文件,可以使用
root.GetFiles(“**”,SearchOption.AllDirectories)
。这样你就不需要递归了。@Porges我知道这个方法,我这样做是因为我的应用程序没有管理员权限。@techno,如果你的应用程序没有管理员权限,递归怎么解决权限问题?@Ray Cheng它不会处理受保护的文件。@techno,你能用递归处理受保护的文件吗?如果你只想列出目录树中任何地方的所有文件,你可以使用root.GetFiles(“**”),SearchOption.AllDirectories)
。这样你就不需要递归了。@Porges我知道这个方法,我这样做是因为我的应用程序没有管理员权限。@techno,如果你的应用程序没有管理员权限,递归怎么解决权限问题?@Ray Cheng它不会处理受保护的文件。@techno,你能用递归处理受保护的文件吗?