Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# Sortiranje fajlova

[es] :: .NET :: .NET Desktop razvoj :: C# Sortiranje fajlova

[ Pregleda: 2224 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

esuser

Član broj: 16547
Poruke: 11
*.hypo-alpe-adria.co.yu



Profil

icon C# Sortiranje fajlova10.09.2004. u 15:10 - pre 186 meseci
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...
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
66.228.70.*



+6 Profil

icon Re: C# Sortiranje fajlova10.09.2004. u 15:27 - pre 186 meseci
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]
 
Odgovor na temu

degojs

Član broj: 4716
Poruke: 5096



+51 Profil

icon Re: C# Sortiranje fajlova10.09.2004. u 15:30 - pre 186 meseci
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();
    }
}

Commercial-Free !!!
 
Odgovor na temu

esuser

Član broj: 16547
Poruke: 11
*.hypo-alpe-adria.co.yu



Profil

icon Re: C# Sortiranje fajlova10.09.2004. u 17:05 - pre 186 meseci
Hvala, uradio samo ovo sto je rekao Dragi Tata, i radi!
10x
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: C# Sortiranje fajlova

[ Pregleda: 2224 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.