簡體   English   中英

顯示一個或多個沒有指定文件的目錄名

[英]Displaying name of directory or directories which do not have a specified file

我有一個主文件夾,其中有一組子目錄。 這些子目錄中的每一個都應該有一個名為 app.config 的文件。沒有這個文件的子目錄

是否可以通過此實現獲得此行為?

我的代碼如下

private void ValidateFiles(string path)
{
    var filesindirectory = new List<string>(Directory
      .GetFiles(path, "app.config", SearchOption.AllDirectories));

    foreach (var file in filesindirectory)
    {
        Console.WriteLine(file);
    }
}

您可以嘗試Linq :我們希望所有目錄都沒有app.config文件:

 using System.IO;
 using System.Linq;

 ...

 List<string> dirs = Directory
    .EnumerateDirectories(path, "*", SearchOption.AllDirectories)
    .Where(dir => !File.Exists(Path.Combine(dir, "app.config")))
    .ToList(); // If we want to have a list of such directories

如果您只想寫入目錄:

 var dirs = Directory
    .EnumerateDirectories(path, "*", SearchOption.AllDirectories)
    .Where(dir => !File.Exists(Path.Combine(dir, "app.config")));

 foreach (string directory in dirs)
   Console.WriteLine(directory);

編輯:讓我們達成協議。 我們有根目錄( path )和可以有app.config文件的子目錄:

    C: 
      \Root # == path
        \SubDir1
          app.config
        \SubDir2
          app.config
          \SubSubDir2_1
            app.config
          \SubSubDir2_2
        \SubDir3
          readme.txt
          \SubSubDir3_1
            settings.xml 
        \SubDir4
          \SubSubDir4_1
            app.config

上面的代碼返回所有沒有app.config的子目錄(包括嵌套的):

     C:\Root\SubDir2\SubSubDir2_1
     C:\Root\SubDir3
     C:\Root\SubDir3\SubSubDir3_1
     C:\Root\SubDir4

如果你想要,比如說,頂級子目錄( SubDir1..SubDir4 )在它們或它們自己的子目錄中沒有app.config

 var dirs = Directory
   .EnumerateDirectories(path)
   .Where(dir => !Directory
      .EnumerateFiles(dir, "app.config", SearchOption.AllDirectories)
      .Any()); 

我們會有

     C:\Root\SubDir3

僅因為SubDir3及其子目錄( SubSubDir3_1 )都不包含app.config

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM