Laden...

GetDirectories() unter Fat32 liefert die Einträge unsortiert

Erstellt von IamTheBug vor 18 Jahren Letzter Beitrag vor 12 Jahren 2.164 Views
I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren
GetDirectories() unter Fat32 liefert die Einträge unsortiert

hey

ich habe mal folgende frage, ev kann das jemand beantworten bevor ich mich zu ode suche 😁
Ich benutze einmal Getdirectories und GetFiles um auf einer Platte die Dateien und verzeichnisse einzulesen und sie dann auszugeben.
Auf meiner NTFS Platte geht das auch super und er gibt Vezeichnisse und Dateien in alphabetischer Reihenfolge aus, aber auf meiner FAT32 Platte macht er dies nicht da ist alles bunt durcheinander gewürfelt.
Liegt das an der Fat Formatierung oder ist das jetzt nur ein dummer Zufall?
also ich weiss einfach nicht woran es liegt.

Mfg

IamTheBug

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren

hm scheint wohl am FAT zu liegen...
denn beim USB stick der FAT ist ist es genau so...
hm muss ich wohl von hand eine sortierung vornehmen...

Mfg

IamTheBug

5.941 Beiträge seit 2005
vor 18 Jahren

USB Stick mit NTFS formatieren 😉

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo IamTheBug,

in FAT32 sind die Verzeichniseinträge in der Tat nicht sortiert => Array.Sort.

herbivore

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren

aha das probiere ich mal danke
ansonsten hätte ich mir selber nen sortieralgo geschrieben...
bin da ja nicht ganz unbewandert auf dem gebiet 😉

aber so ist wohl bequemer
muss ich nur noch die effeziens ermitteln 😁

Mfg

IamTheBug

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo IamTheBug,

Array.Sort benutzt den Quicksort-Algorithmus. Der Aufwand ist im Schnitt n*log n. Besser geht es nicht.

herbivore

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren

ach es geht damit super
danke nochmal
man wenn ich doch nur gleich immer über alle zu Verfügung gestellten Befehle bescheid wüsste.

Danke

Mfg

IamTheBug

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren

hm ja Qiucksort. Schade hätten die doch ruhig nen Cleverquicksort draus machen können. Wäre zwar im mittel im noch n log n aber dafür wäre durch die andere Wahl des Pivoelements die Laufzeit im schlechtesten Fall leicht gesunken 😉

edit: sorry das musste ich jetzt nachschieben 😁

Mfg

IamTheBug

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo IamTheBug,

hups, ich hatte irgendwie "unbewandert" statt "nicht unbewandert" gelesen. Sonst hätte ich mir den Hinweis auf die Aufwandsklasse natürlich sparen können.

Aber wo wir gerade dabei sind. Mit fehlt nicht so sehr der Cleversort, der vielleicht noch ein bisschen mehr Performance rausholtm, sondern ein stabiler Sortieralgorithmus. Das wäre insbesondere für das Sortieren von ListViews (durch Anklicken der Spalten in der umgekehrten Reihenfolge entsprechend der Priorität der Sortierkriterien) sehr praktisch.

herbivore

I
IamTheBug Themenstarter:in
401 Beiträge seit 2006
vor 18 Jahren

hm und was wäre eventuell mit einem bucketsort algorithmus? Wenn er eben nicht schon unterstützt wird muss man eben selber ein paar zeilen schreiben 😉

Ich denke das macht sich für das Sortieren von Elementen in einem Listview nicht schlecht. (z.b. wenn dort Dateinamen aufgelistet sind und diese sortiert werden sollen?)

Mfg

IamTheBug

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo IamTheBug,

ja, implementieren kann man viel. Mich stört, dass es kein vorgegebenes Array.Sort (..., bool stable) oder Array.SortStable (...) gibt.

herbivore

E
346 Beiträge seit 2007
vor 12 Jahren

Das Thema ist zwar schon sehr alt, aber genau darum geht es bei meiner Frage.
Ich möchte ein kleines Programm für mich programmieren um den Inhalt einer Fat32 Speicherkarte nach meinem Wunsch zu sortieren.

Die Dateien werden unter Windows zwar sortiert angezeigt, aber in Geräten mit embedet Systemen sind die Dateien durcheinander. Ich nehme an, dass es die Reihenfolge wie die Daten auf das Dateisystem geschrieben wurden.

Gibt es eine einfache Möglichkeit die Reihenfolge unter C# zu beeinflussen?

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo el_vital,

Ich nehme an, dass es die Reihenfolge wie die Daten auf das Dateisystem geschrieben wurden.

solange zwischendurch keine Einträge gelöscht werden, trifft das zu.

Gibt es eine einfache Möglichkeit die Reihenfolge unter C# zu beeinflussen?

Dadurch, dass du die Einträge gleich in der gewünschten Reihenfolge schreibst. Nachträglich dürfte das nicht so einfach sein.

Oder du sortierst die Einträge eben beim bzw. nach dem Auslesen, wie oben beschrieben.

herbivore

E
346 Beiträge seit 2007
vor 12 Jahren

Dieses Tool kann die Einträge sehr schnell umsortieren. Es scheint so zu sein, dass die Indizes in der Datentabelle einfach geändert werden.
Ich finde aber leider keine Informationen darüber wie es gemacht wird.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo el_vital,

mit Low-Level-Funktionen (Win32) oder gar mit direkten Zugriff auf die Sektoren bzw. die FAT32-Strukturen auf der Platte kannst du natürlich alles tun. Meine Aussage bezog sich auf die .NET Ebene.

herbivore