Самый быстрый способ подсчета файлов папок в .NET 4.0 - PullRequest
0 голосов
/ 22 января 2011

Мне нужно подсчитать количество файлов в папке в .NET 4: Счетчик вернет номер всех файлов, кроме файла .db в папке.

Вариант 1:

 IEnumerable<string> enumerables = Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly);
 int iNumFiles = 0; 
 foreach (string f in enumerables)
 {
    if (!f.EndsWith(".db"))
       iNumFiles++;
 }

 //iNumFiles is the count

Вариант 2:

int iNumFiles = 0; 
IEnumerable<string> enumerables1 = Directory.EnumerateFiles(strPath, "*.*", SearchOption.TopDirectoryOnly);
IEnumerable<string> enumerables2 = Directory.EnumerateFiles(strPath, "*.db", SearchOption.TopDirectoryOnly);

iNumFiles = enumerables1.Count() - enumerables2.Count();

//iNumFiles is the count

Есть ли какие-либо более простые, но лучшие методы (использующие RegEx или что-то еще), которые мне следует использовать?

EDIT: Должен ли я сохранить файл .db или насколько он полезен? Все, что я знаю, это база данных (кеш) содержимого папки.

Это испортило мне количество файлов.

Спасибо за чтение.

Ответы [ 2 ]

0 голосов
/ 22 января 2011

Превратить результаты . в запрашиваемый объект.затем запросите элементы * .db.

var queryObject = My.Computer.FileSystem.getFiles(foldername, FileIO.SearchOption.SearchTopLevelOnly, "*.*").AsQueryable();

var filesIcareAbout = queryObject.where(f => right(f,3) != ".db");

Я взял несколько синтаксических сокращений.Это может быть не совсем правильно синтаксически.

0 голосов
/ 22 января 2011
new DirectoryInfo(strPath).EnumerateFiles("*.db").Count();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...