[英]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.