Trovare i files con una certa estensione in C#

Trovare i files con una certa estensione in C#

Per un programmino che sto facendo in C#, ho la necessità di indentificare tutti i files con una certa estensione in una determinata directory (file doc e docx per la precisione).

Per ottenere questa lista, abbiamo diverse possiblità, sempre usando DirectoryInfo e FileInfo.

Una prima possibilità è usare il metodo GetFiles, che restituisce un array di FileInfo.

Però non mi piace un granchè, perchè lo trovo poco flessibile nel caso di più estensioni (soprattutto quando non simili come nel mio caso).

Girovagando, ho trovato un metodo che usa LINQ, che mi è piaciuto molto di più.

Questo il codice di esempio:

using System;
using System.IO;
using System.Linq;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] extensions = new[] { ".doc", ".docx" };
            DirectoryInfo dirInfo = new DirectoryInfo(@"C:UsersadmferroneDesktop");
            FileInfo[] wordFiles = dirInfo.EnumerateFiles().Where(f => extensions.Contains(f.Extension.ToLower())).ToArray();
            foreach (FileInfo wordFile in wordFiles)
            {
                Console.WriteLine(wordFile.FullName);
            }
        }
    }
}

In pratica, usiamo un altro metodo di DirectoryInfo (EnumerateFiles), ma lo "accoppiamo" a LINQ per andare a cercare le estensioni che ricalcano quelle impostate sopra.

Questo metodo lo trovo molto più flessibile e veloce.

Enjoy!