C# foreach循环

C# foreach循环,c#,loops,try-catch,finally,C#,Loops,Try Catch,Finally,我有一个foreach循环,它有try-catch和finally。它遍历文件夹中的文件,最后将它们全部删除……但现在如果我有两个文件,因为它正在删除所有文件(由于应用程序的功能,我需要删除所有文件),它将不会通过第二个文件。是否可以让foreach循环完成,然后删除foreach方法中的所有文件?以下是一个示例: foreach (DirectoryInfo directory in directories) { foreach (FileInfo file in directory.

我有一个foreach循环,它有try-catch和finally。它遍历文件夹中的文件,最后将它们全部删除……但现在如果我有两个文件,因为它正在删除所有文件(由于应用程序的功能,我需要删除所有文件),它将不会通过第二个文件。是否可以让foreach循环完成,然后删除foreach方法中的所有文件?以下是一个示例:

foreach (DirectoryInfo directory in directories)
{
    foreach (FileInfo file in directory.GetFiles("*.csv"))
    {
        try
        {
           //do something with file

        }

        catch (Exception e)
        {
            //catch exception
        }
        finally
        {
            if (!IsFileLocked(file))
            {
                string[] files = Directory.GetFiles(@"C:\Test");
                foreach (string filetoDelete in files)
                {
                    File.Delete(filetoDelete);
                }
            }
        }
    }
}

希望它足够清楚。

我不太确定我是否正确理解了您的要求,但对我来说,这似乎是一个非常琐碎的解决方案,如下所示:

foreach (DirectoryInfo directory in directories)
{
    foreach (FileInfo file in directory.GetFiles("*.csv"))
    {
        try
        {
            //do something with file

         }

         catch (Exception e)
         {
               //catch exception
          }
     }

     foreach(FileInfo fileToDeleteInfo...)
     {
          try
          {
               if (!IsFileLocked(fileToDeleteInfo))
               {
                  string[] files = Directory.GetFiles(@"C:\Test");
                  foreach (string filetoDelete in files)
                  {
                       File.Delete(filetoDelete);
                  }
                }


            }
          catch(...)
          {... }
     }
换句话说,将文件删除从第二个(嵌套的)
foreach
移动到新的

如果这不是您的要求,请澄清。

您的代码:

  • 循环给定的目录集,并针对每个目录:
  • 获取该目录中的“*.csv”文件以及每个文件:
  • 做点什么然后:
  • “C:\Test”中删除文件

  • 您不应该删除刚处理的文件,或者至少是当前正在处理的目录中的文件,而不是“C:\Test”中的文件吗?

    在循环过程中删除每个文件,否则不需要循环。最好使用FOR loop而不是foreach。但是,如果我有与该文件相关的图像,我需要清除图像,同时将文件删除代码部分保留在目录循环之外,它将一次删除所有文件,如果要在每次目录检查后删除文件,请将其保留在fileinfo循环之外。问题是什么
    C:\Test
    目录之间的关系?