错误:路径中的非法字符
我正在使用enumeratefiles列出目录中的所有文件。它在遇到包含非法字符的文件名时抛出异常,然后停止列出文件的foreach循环。我怎样才能使foreach循环继续列出文件名,尽管例外?有任何想法吗?错误:路径中的非法字符
代码:
try {
DirectoryInfo directory = new DirectoryInfo(targetPath);
IEnumerable<FileInfo> allfiles = directory.EnumerateFiles("*.*", SearchOption.AllDirectories);
foreach (FileInfo file in allfiles)
{
Console.WriteLine(file.Name);
}
}
catch (ArgumentException o)
{
Console.WriteLine("Error: {0}", o.Message);
}
你周围有foreach
循环的尝试捕捉。这意味着如果循环内的任何一个调用失败,您的代码将中止循环的其余部分。
更改代码是这样的:
foreach (FileInfo file in allfiles)
{
try
{
Console.WriteLine(file.Name);
}
catch (ArgumentException o)
{
Console.WriteLine("Error: {0}", o.Message);
}
}
你应该还是有尝试... ...的EnumerateFiles
各地赶在引发错误的情况。
我不明白你为什么要将'try/catch'移到'Console.WriteLine'附近......?你认为'Console.WriteLine'是否抛出异常?似乎'IEnumerable.Current'或'IEnumerable.MoveNext'是什么在这里扔... – 2012-04-13 21:35:25
谢谢队友:)它现在完美的作品! – 2012-04-13 21:58:27
@ChrisF是的,出于某种原因,它是抛出异常的Console.WriteLine。 – 2012-04-13 22:36:11
请将您的密码发送 – 2012-04-13 17:31:09
您是说您的硬盘上存有无效字符的文件?无论如何..显示一些东西开始使用它(添加一个try..catch,添加支票,谁知道!)向我们展示一些代码;) – gbianchi 2012-04-13 17:32:18
它的我的下载文件夹及其用于不同编码语言的示例项目,那些无数的文件夹之一。尽管如此,我仍然需要找到解决办法。 @BrianRasmussen我更新了代码。 – 2012-04-13 17:38:01