Ordinare i file di un DirectoryInfo per reverse date

In asp.net è possibile ottenere tutti i file di una directory (oggetto DirectoryInfo) utilizzando il metodo GetFiles() che restituisce un array di oggetti FileInfo.

Se proviamo a fare l’output di questo array ci aggiorgiamo che non abbiamo modo di ordinarlo per data, e soprattutto per data inversa. Utilizziamo per farlo un oggetto SortedList e una piccola classe del tipo ICompare. L’oggetto SortedList permette di inserire una lista di elementi con chiave e valore (key, value).

Ecco il codice completo:

public class myReverserClass : IComparer<DateTime>
    {
        #region IComparer<DateTime> Members

        public int Compare(DateTime x, DateTime y)
        {
            return DateTime.Compare(y, x);
        }

        #endregion
    }

//recupero file creati
        FileInfo[] filesLast = rootTmpInfo.GetFiles();   

        //creo una sorted list e la popolo
        IComparer<DateTime> myComparer = new myReverserClass();
        SortedList<DateTime, FileInfo> filesLastSL = new SortedList<DateTime, FileInfo>(myComparer);
        foreach (FileInfo fi in filesLast)
        {
            filesLastSL.Add(fi.LastWriteTime, fi);
        }

        //colonne dati
        foreach (KeyValuePair<DateTime,FileInfo> fik in filesLastSL)
        {
            FileInfo fi = fik.Value;
        Response.write("chiave: " + fik.key + " Nome file: " + fi.Name);
        }

Cosa abbiamo fatto:

  1. abbiamo creato la SortedList, l’abbiamo popolata partendo dall’array
  2. abbiamo quindi creato un oggetto ICompare tipizzato DateTime (ICompare<DateTime>)
  3. abbiamo prodotto l’output dalla SortedList.

Grazie infinite a Davide per il supporto fisico / morale.

 

Loading Facebook Comments ...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *