2017-06-07 64 views
1

我在這裏有我的代碼將刪除,但它會刪除包括兩個子文件夾。我只想刪除兩個子文件夾的內容。只刪除兩個子文件夾的內容

  Array.ForEach(Directory.GetFiles(txtfilename.Text), File.Delete); 
      System.IO.DirectoryInfo di = new DirectoryInfo(txtfilename.Text); 

      foreach (FileInfo file in di.GetFiles()) 
      { 
       file.Delete(); 
      } 
      foreach (DirectoryInfo dir in di.GetDirectories()) 
      { 
       dir.Delete(true); 
      } 

如果有人可以調試或顯示某些解決方案,非常感謝。

+0

什麼是'dir.Delete(true);'for ..? –

+0

是的,它會在目錄內刪除。例如,這是我的目錄e:\ user \ sam \ des我只需要映射des文件夾,但des文件夾有兩個子文件夾,我只想刪除兩個子文件夾的內容。 – Sam

+1

然後停止刪除所有的目錄,並且不要刪除你想保留的目錄。你在'dir'中有每個人的名字,但是你只是刪除了循環中的所有東西。如果你真的閱讀代碼,它會有所幫助。 –

回答

0

好的。我解決了我自己的問題。我用這個代碼。在搜索一些代碼併合並每個想法之後,這就是我想出這種代碼的原因,但我並不完全明白我在做什麼。

string local = txtfilename.Text; 
    string[] dirs = Directory.GetFiles(local, 
        "*.csv*", SearchOption.AllDirectories); 

    List<string> singleDirNames = dirs.Select(x => new 
    FileInfo(x).Directory.Name).Distinct().ToList(); 

    foreach (string filePath in dirs) 
     { 
     if (filePath.Contains(".csv")) 
     File.Delete(filePath); 
     } 

因爲這兩個子文件夾的內容都是csv文件。我專門將目標文件擴展名刪除。我少了我想要的某個擴展名被刪除。我真的想刪除兩個子文件夾中的所有內容。任何人都可以改善我的命運嗎?

相關問題