[英]Is there a way to get a list of paths in a folder excluding specific folders
我正在嘗試編寫一個“自動”創建一個 .gitignore 文件的程序。
我想要實現的是從特定文件夾中獲取路徑列表,其中特定文件(擴展名)不包括特定文件夾。
假設我想在文件夾 (D://Files) 和所有子文件夾 (D://Files/SubFiles) 但不是子文件夾 (D://Files/GroovyBackups) 中找到所有 groovy 文件路徑。
這是我到目前為止。
if (foldersToIgnore.Count == 0)
folders = Directory.EnumerateFiles(targetFolderPath, "*", SearchOption.AllDirectories).ToList();
else
{
folders = Directory.EnumerateFiles(targetFolderPath, "*", SearchOption.AllDirectories)
.Where(
dir =>
!foldersToIgnore.Contains(dir)
)
.ToList();
}
我認為第一個 if 語句工作正常,但只要我有文件夾我想“忽略”它就不會
EnumerateFiles
僅返回文件路徑,而不返回目錄。
您需要檢查每個文件的目錄:
var files = Directory.EnumerateFiles(targetFolderPath, "*", SearchOption.AllDirectories)
.Where(filePath => !foldersToIgnore.Contains(new FileInfo(filePath).Directory.Name));
您可以使用StringComparer
進行不區分大小寫的搜索,例如:
!foldersToIgnore.Contains(new FileInfo(filePath).Directory.Name,
StringComparer.OrdinalIgnoreCase);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.