Hallo, ich bin im Moment an einer FAT32 Implementierung auf ARM7. Das ganze soll mit der Festplatte meines alten Notebooks laufen. Es läuft soweit das wichtigste - ich kann Sektoren von der Platte lesen, sowie Sektoren schreiben. Habe ich auch schon mittels Disk-Editor überprüft. Auch das Laden der FAT und so weiter klappt. Womit ich mir jetzt etwas schwer tue: wie finde ich einen gewünschten Eintrag in der FAT Directory Structure? Das sind ja immer diese 32 Bytes langen Einträge, wo unter anderem auch der (kurze) Dateiname abgelegt ist. Ich habe eine Funktion FindFile, der wird ein String übergeben, z.B. so: FindFile("/directory/filename.txt") Die Funktion liefert dann einen Pointer zurück, mit dem das Programm dann die Datei lesen bzw. beschreiben kann (das ist aber nicht das Problem). Der Stand bis jetzt: Ich lade die FAT in einen 1k grossen Puffer. Auch vom Root Directory werden die ersten beiden Sektoren in einen Puffer geladen. Jetzt soll meine Funktion sich durch die Verzeichniseinträge hangeln, und als erstes einen Eintrag namens "directory" finden. Problem dabie ist aber: Die Dateinamen sind so dämlich formatiert! kurze Dateinamen halt. Ich will aber lange. Was ich bisher programmiert habe, um diese Dateinamen zu finden, ist ziemlicher murks; könnt ihr mir nicht einen Tipp geben, wie es einigermassen elegant geht? So wie ich mir das vorstelle, wird dann, wenn der Eintrag "directory" gefunden wurde, dessen Startcluster eruiert. Dieser wird dann in den Buffer geladen, wo vorher das Root-Directory drin war, und die Suche beginnt von neuem, diesmal nach einem Eintrag namens "filename.txt". Es ist also eine rekursive Funktion! Kann mir wer auf die Sprünge helfen? wie macht ihr das so, mit dem Suchen der Einträge?
:
Gesperrt durch User
>Die Dateinamen sind so dämlich formatiert! kurze Dateinamen >halt. Ich will aber lange. Was du willst ist irrelevant. Es gibt mehrere Einträge für den langen Dateinamen. Der wichtigste ist aber halt der Eintrag mit dem kurzen 8.3 Namen. Nur da findest du die Clusternummer für das Subdirectory.
holger, und wie setzt man denn den langen Dateinamen am besten zusammen? Dummerweise folgen ja erst die hinteren Teile des Namens, dann die vorderen, und dann erst der kurze Dateiname.
>und wie setzt man denn den langen Dateinamen am besten zusammen? >Dummerweise folgen ja erst die hinteren Teile des Namens, dann die >vorderen, und dann erst der kurze Dateiname. Das ist ein reines Sortierproblem. Leicht zu lösen.
holger, kannst du mir dazu mal einen Tipp geben. ICh bin etwas verwirrt, und weiss grade nicht, wie man das Problem elegant lösen kann, ohne etwa 3 verschiedene Puffer zu benutzen.
Hallo Lieber Leser. Falls jemand auf den Artikel stößt und noch weitere Infos zu FAT32 Verzeichniseinträgen, auch Lange Dateinamen VFAT sucht. Hier der LINK: http://averstak.tripod.com/fatdox/dir.htm Grüße Karlsson
Das ist schön, daß Du das jetzt nach vier Jahren noch zu diesem Thread meintest beitragen zu müssen.