gpt4 book ai didi

.net - 有没有办法从 Directory.EnumerateFiles 中的异常中恢复?

转载 作者:行者123 更新时间:2023-12-02 05:48:20 24 4
gpt4 key购买 nike

在 .NET 4 中,有这个 Directory.EnumerateFiles()看起来很方便的递归方法。
但是,如果在递归中发生异常,我如何继续/恢复并继续枚举其余文件?

try
{
var files = from file in Directory.EnumerateFiles("c:\\",
"*.*", SearchOption.AllDirectories)
select new
{
File = file
};

Console.WriteLine(files.Count().ToString());

}
catch (UnauthorizedAccessException uEx)
{
Console.WriteLine(uEx.Message);
}
catch (PathTooLongException ptlEx)
{
Console.WriteLine(ptlEx.Message);
}

最佳答案

我确实找到了解决方案。通过使用堆栈来压入枚举结果,确实可以处理异常。这是一个代码片段:(灵感来自 this article )

List<string> results = new List<string>();
string start = "c:\\";
results.Add(start);
Stack<string> stack = new Stack<string>();

do
{
try
{
var dirs = from dir in Directory.EnumerateDirectories(
start, "*.*", SearchOption.TopDirectoryOnly)
select dir;

Array.ForEach(dirs.ToArray(), stack.Push);
start = stack.Pop();
results.Add(start);
}
catch (UnauthorizedAccessException ex)
{
Console.WriteLine(ex.Message);
start = stack.Pop();
results.Add(start);
}

} while (stack.Count != 0);

foreach (string file in results)
{
Console.WriteLine(file);
}

关于.net - 有没有办法从 Directory.EnumerateFiles 中的异常中恢复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2559064/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com