2012-02-08 124 views
0

我有一个foreach循环有尝试渔获物和最后。它通过文件夹中的文件,并最终删除它们....但现在,如果我有两个文件,因为它删除所有(我需要删除所有因为应用程序功能)它不会去通过第二个文件。有没有可能让那么foreach循环完成删除这里的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); 
       } 
      } 
     } 
    } 
} 

希望这是非常明显的。

+1

通过他们删除每一个文件,你循环,否则循环是不需要的。 – 2012-02-08 12:51:35

+0

更好地使用FOR循环代替foreach。 – 2012-02-08 12:58:15

+0

但后来我有与该文件,我需要的图像清除以及图像 – Zaki 2012-02-08 13:00:21

回答

2

我不是很肯定,如果我正确理解你问什么,但对我来说,似乎解决方案非常容易的,就像这样:

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进入新的。

如果这不是你问什么,请澄清。

5

您的代码:

  1. 遍历给定的目录,并为他们每个人:
  2. 获取的“* .csv”文件,在该目录和每个文件:
  3. 请问东西,然后::
  4. “\测试C” 删除文件。

你不是应该删除您刚刚处理的文件,或者从DIR至少你的文件正在处理,而不是从“C:\测试”文件?

+0

是的,我纠正了..谢谢 – Zaki 2012-02-08 13:28:08