Nil18
Erfahrenes Mitglied
Hallo liebe Helfer 
Ich hab hier ein Problem mit der Sortierung bei der Methode DirectoryInfo.GetFiles().
Und zwar lese ich alle Dateien eines Ordners ein und ändere deren Namen (Nummeriert).
Das Problem dabei ist, dass die Methode DirectoryInfo.GetFiles() anscheinend falsch sortiert.
Angenommen ich habe einen Mp3 Player auf dem das Lied "Foo" vor dem Lied "Bar" spielen soll. Mein Mp3 Player sortiert die Lieder blöderweise aber immer nach Alphabet. Nun wollte ich ein Programm schreiben welches die Lieder einfach Nummeriert, also bekommt Lied "Foo" Die Nummer 01 und Lied "Bar" die Nummer "02", damit würde es der Mp3 Player richtig ordnen.
Das Problem dabei ist eben, dass DirectoryInfo.GetFiles() selbst nach Alphabet ordnet, wie bekomme ich es also hin, dass die Dateien in der Reihenfolge "eingelesen" werden, wie sie tatsächlich im Ordner aufgelistet liegen?
Hier mal mein Code:
Programmiert wird in C# 2.0
In der MSDN steht:
Okay, nur wo soll ich sortieren? Wie aus dem Code zu erkennen ist gehe ich mit foreach drüber.
Bitte um Hilfe
Danke im Voraus!
PS: Wie kann man denn hier so schön färbige Code Snippets posten wie sie Cosmo immer macht?
//edit:
Habe mittlerweile etwas gefunden:
http://dotnet.mvps.org/dotnet/code/filesystem/#SortFiles
Nuuuuur, wie sortiert man in der Reihenfolge in der die Dateien im Verzeichnis liegen?

Ich hab hier ein Problem mit der Sortierung bei der Methode DirectoryInfo.GetFiles().
Und zwar lese ich alle Dateien eines Ordners ein und ändere deren Namen (Nummeriert).
Das Problem dabei ist, dass die Methode DirectoryInfo.GetFiles() anscheinend falsch sortiert.
Angenommen ich habe einen Mp3 Player auf dem das Lied "Foo" vor dem Lied "Bar" spielen soll. Mein Mp3 Player sortiert die Lieder blöderweise aber immer nach Alphabet. Nun wollte ich ein Programm schreiben welches die Lieder einfach Nummeriert, also bekommt Lied "Foo" Die Nummer 01 und Lied "Bar" die Nummer "02", damit würde es der Mp3 Player richtig ordnen.
Das Problem dabei ist eben, dass DirectoryInfo.GetFiles() selbst nach Alphabet ordnet, wie bekomme ich es also hin, dass die Dateien in der Reihenfolge "eingelesen" werden, wie sie tatsächlich im Ordner aufgelistet liegen?
Hier mal mein Code:
Code:
public string performRename()
{
//Gibt's das Verzeichnis überhaupt?
if (!_dir.Exists)
return "Das Verzeichnis existiert nicht!";
int tracknumber = 0;
try
{
//Jede Datei im ausgewählten Verzeichnis
foreach (FileInfo curFile in _dir.GetFiles())
{
//Wenn es eine Mp3 oder WMA Datei ist
if(curFile.Extension.Equals(".mp3") || curFile.Extension.Equals(".wma"))
{
//Wie soll der Name aussehen?
if (_option)
//Ordner + \ + nummer + name. Bspw: C:\Musik\01 foobar.mp3
curFile.MoveTo(_dir + "\\" + String.Format("{0:d2}",tracknumber) + " " + curFile.Name);
else
//Ordner + \ + nummer + endung. Bspw: C:\Musik\01.mp3
curFile.MoveTo(_dir + "\\" + String.Format("{0:d2}", tracknumber) + curFile.Extension);
tracknumber++;
}
}
}
catch
{
return "Fehler während des Umbenennens!";
}
return "Alle Dateien erfolgreich umbenannt!";
}
Programmiert wird in C# 2.0
In der MSDN steht:
The order of the returned file names is not guaranteed; use the Sort method if a specific sort order is required.
Okay, nur wo soll ich sortieren? Wie aus dem Code zu erkennen ist gehe ich mit foreach drüber.
Bitte um Hilfe

Danke im Voraus!
PS: Wie kann man denn hier so schön färbige Code Snippets posten wie sie Cosmo immer macht?
//edit:
Habe mittlerweile etwas gefunden:
http://dotnet.mvps.org/dotnet/code/filesystem/#SortFiles
Nuuuuur, wie sortiert man in der Reihenfolge in der die Dateien im Verzeichnis liegen?
Zuletzt bearbeitet: