2012-02-08 120 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