Zum Inhalt springen

Dateien aus Verzeischnis auslesen?


Dom++

Empfohlene Beiträge

Hallo!

Ich habe folgendes Problem:

Ich möchte aus einem Verzeichnis und seinen Unterverzeichnissen den Filename von allen .mp3 Dateien in einem Char[] abspeichern.

(also ich brauche nur ein Char[] und in dem kann der alte Filename immer wieder überschrieben werden.)

Ich arbeite mit Windows XP und denke, dass ich die Funktionen FindFirstFile und FindNextFile für dies notwendig ist.

Ich habe versucht laut MSDN und anderen Suchen in google dies zu verwirklichen, jedoch bekomm ich nichts hin.

Ich bekomme die Funktionen einfach nicht zum laufen...

Ich hoffe ihr könnt mir helfen

lg Dom

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja...

wenn ich das richtig verstehe ist der Pfad der gefundenen Datei in einer WIN32_FIND_DATA-Struktur gespeichert.

Ich kann aber leider keinen Thread finden indem angegeben wird wie ich daraus den Pfad auslese und dann in ein Variable vom Typ Char[] einlese.

ps.: blöde Frage: welche Datei muss ich headern dass er diese struct erkennt?

lg

Link zu diesem Kommentar
Auf anderen Seiten teilen

danke

hm komischerweise gibts Requirements bei meiner MSDN nicht...

habs aber bei der Online-MSDN gefunden.

Also nochmal das Problem:

WIN32_FIND_DATA w32fd;

char path[93];

HANDLE hFind = FindFirstFile("C:\\*.mp3",&w32fd);

if ( hFind != INVALID_HANDLE_VALUE)

{

do

{

// hier möchte ich den gesamten Pfad der gefundenen Datei

// in die Variable path speichern.

}

while (FindNextFile(hFind,&w32fd));

}

FindClose(hFind);

achja: was muss ich ändern dass auch die Unterverzeichnisse durchsucht werden?

Link zu diesem Kommentar
Auf anderen Seiten teilen

// hier möchte ich den gesamten Pfad der gefundenen Datei

// in die Variable path speichern.

strncpy(path, w32fd.cFileName, 92);

Du solltest allerdings das letzte Element des Arrays mit '\0' initialisieren, für den Fall, dass 92 Zeichen nicht ausreichen (was sehr leicht passieren kann).

achja: was muss ich ändern dass auch die Unterverzeichnisse durchsucht werden?
Das geht nicht automatisch. Du musst die Unterverzeichnisse suchen (in WIN32_FIND_DATA::dwFileAttributes ist das Flag FILE_ATTRIBUTE_DIRECTORY gesetzt) und dann in den gefundenen Verzeichnissen nochmal suchen.
Link zu diesem Kommentar
Auf anderen Seiten teilen

ich weiß zwar, wie ich überprüfen kann ob das Flag gesetzt ist oder nicht,

if((w32fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)

(Edit: sorry, hatte da ein "nicht" gelesen, wo keines war :))

aber woher bekomm ich dann die Namen der Unterverzeichnisse her?
Aus cFileName, wie die Dateinamen auch. Du musst nur aufpassen, dass du nicht bei . und .. weitersuchst.
Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...