错误:路径中的字符非法

时间:2012-04-13 17:29:53

标签: visual-studio-2010 ienumerable enumerate illegal-characters

我使用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);
}

1 个答案:

答案 0 :(得分:2)

你有foreach循环的try catch。这意味着如果循环中的任何一个调用失败,您的代码将中止循环的其余部分。

将代码更改为:

foreach (FileInfo file in allfiles)
{
    try
    {
        Console.WriteLine(file.Name);
    }
    catch (ArgumentException o)
    {
        Console.WriteLine("Error: {0}", o.Message);
    }
}

如果发生错误,你仍然应该试试{EnumerateFiles