Как исключить определенный тип файла при получении файлов из каталога?
Я пробовал
var files = Directory.GetFiles(jobDir);
Но, похоже, эта функция может выбирать только типы файлов, которые вы хотите включить, а не исключать.
Как исключить определенный тип файла при получении файлов из каталога?
Я пробовал
var files = Directory.GetFiles(jobDir);
Но, похоже, эта функция может выбирать только типы файлов, которые вы хотите включить, а не исключать.
Вы должны сами фильтровать эти файлы, вы можете написать что-то вроде этого:
var files = Directory.GetFiles(jobDir).Where(name => !name.EndsWith(".xml"));
Вы можете попробовать что-то вроде этого:
var allFiles = Directory.GetFiles(@"C:\Path\", "");
var filesToExclude = Directory.GetFiles(@"C:\Path\", "*.txt");
var wantedFiles = allFiles.Except(filesToExclude);
Я думаю, вы можете использовать лямбда-выражение
var files = Array.FindAll(Directory.GetFiles(jobDir), x => !x.EndWith(".myext"))
Я знаю, это старый запрос, но обо мне это всегда важно.
если вы хотите исключить список расширений файла: (на основе fooobar.com/questions/25514/...)
var exts = new[] { ".mp3", ".jpg" };
public IEnumerable<string> FilterFiles(string path, params string[] exts) {
return
Directory
.GetFiles(path, SearchOption.AllDirectories)
.Where(file => !exts.Any(x => file.Extension.EndsWith(x, StringComparison.OrdinalIgnoreCase)));
}
Вы можете попробовать это,
var directoryInfo = new DirectoryInfo("C:\YourPath");
var filesInfo = directoryInfo.GetFiles().Where(x => x.Extension != ".pdb");
Afaik нет способа указать шаблоны исключений. Вы должны сделать это вручную, например:
string[] files = Directory.GetFiles(myDir);
foreach(string fileName in files)
{
DoSomething(fileName);
}
Это моя версия ответов, которые я читал выше
List<FileInfo> fileInfoList = ((DirectoryInfo)new DirectoryInfo(myPath)).GetFiles(fileNameOnly + "*").Where(x => !x.Name.EndsWith(".pdf")).ToList<FileInfo>();
Я наткнулся на это, пытаясь найти способ сделать это, когда исключение может использовать правила шаблона поиска, а не только логику типа EndWith.
например. Спецификатор шаблона шаблона поиска соответствует:
Это можно было бы использовать для вышеизложенного следующим образом.
string dir = @"C:\Temp";
var items = Directory.GetFiles(dir, "*.*").Except(Directory.GetFiles(dir, "*.xml"));
Или для исключения элементов, которые в противном случае были бы включены.
string dir = @"C:\Temp";
var items = Directory.GetFiles(dir, "*.txt").Except(Directory.GetFiles(dir, "*HOLD*.txt"));
string[] filesToDelete = Directory.GetFiles(@"C:\Temp", "*.der");
foreach (string fileName in filesToDelete)
{
File.Delete(fileName);
}