[ esuser @ 10.09.2004. 15:10 ] @
Kako u C# kada ocitam fajlove iz nekog dir-a da ih sortiram po vremenu modifikovanja (kreiranja).
To mi je bitno, da bi kasnije u for petlji isao od najnovijeg ka starijim fajlovima...

npr:
DirectoryInfo di = new DirectoryInfo("C:\\test");
FileInfo[] fajlovi = di.GetFiles();

Kako sada da sortiram niz 'fajlovi' po datumu modifikovanja (kao sto mogu u Windows Exploreru), i tako sortiran da ga prespem u drugi niz...
[ Dragi Tata @ 10.09.2004. 15:27 ] @
Napravi klasu za poređenje fajlova po vremenu kreiranja koja implementira IComparer interfejs. Nešto ovako:

Code:

class FileTimeComparer : IComparer
{
  public int Compare (object left, object right)
  {
  FileInfo leftInfo = left as FileInfo;
  FileInfo rightInfo = right as FileInfo;
  
  if (leftInfo == null || rightInfo == null)
    throw new ArgumentException ("Invalid arguments" + left.ToString() + " " + right.ToString());

  return leftInfo.CreationTime.CompareTo(rightInfo.CreationTime);
  }
}


a onda lako sortiraš fajlove:

Code:

DirectoryInfo di = new DirectoryInfo(@"C:\MyProjects\debug");
FileInfo[] fajlovi = di.GetFiles();

Array.Sort(fajlovi, new FileTimeComparer());


[Ovu poruku je menjao Dragi Tata dana 10.09.2004. u 10:09 GMT]
[ degojs @ 10.09.2004. 15:30 ] @
Možda ovako: za svaki fajl mogao bi da imaš klasu Fajl koja bi override metod CompareTo. Onda se sortiranje svodi na prosto stavljanje ovih objekata u ArrayList i sortiranje.
Code:

class Fajl : IComparable
{
    private string Ime;
    public DateTime Datum;

    public Fajl(string ime)
    {
        Ime = ime;
    }

    public int CompareTo(object obj)
    {
        Fajl fajl2 = (Fajl)obj;
        if (this.Datum < fajl2.Datum) 
            return -1;
        else if (this.Datum > fajl2.Datum)
            return 1;
        else
            return 0;
    }
}
class Class1
{
/// <summary>
/// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Fajl f1 = new Fajl("Prvi");
        Fajl f2 = new Fajl("Drugi");

                          // postavljamo neke vrednosti za probu..

        f1.Datum = Convert.ToDateTime("2004-Feb-1 18:22:31");
        f2.Datum = Convert.ToDateTime("2004-Jan-1 18:22:33");
    
        System.Collections.ArrayList fajlovi = new System.Collections.ArrayList();
        fajlovi.Add(f1);
        fajlovi.Add(f2);
        fajlovi.Sort();

        foreach( Fajl f in fajlovi)
                 Console.WriteLine( f.Ime );

        Console.ReadLine();
    }
}
[ esuser @ 10.09.2004. 17:05 ] @
Hvala, uradio samo ovo sto je rekao Dragi Tata, i radi!
10x