Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: FAQ - WinAPI ::  Dateien in einem Verzeichnis auflisten (FindFirstFile/FindNextFile)     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
Lenin2001
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.03.2001
Beiträge: 87
Beitrag Lenin2001 Mitglied 09:05:00 17.06.2002   Titel:   Dateien in einem Verzeichnis auflisten (FindFirstFile/FindNextFile)            Zitieren

Moin!!

Kennt jemand ein Algorithmus um alle Dateien eines Verzeichnises auszulesen?? Irgendwas mit FindFirstFile und FindNextFile, aber wie soll ich das anwenden (->Beispiel)?? Und kennt jemand eine Funktion um alle Unterverzeichnisse herauszubekommen??

Danke schon mal an dieser Stelle, dass ihr euch die Mühe macht meine Probleme zu lesen und hoffe, dass ihr sie für mich auch lösen könnt :)

Lenin

[ Dieser Beitrag wurde am 18.06.2002 um 14:10 Uhr von geeky editiert. ]
Werbeunterbrechung
Schmelly
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.06.2001
Beiträge: 83
Beitrag Schmelly Mitglied 09:38:00 17.06.2002   Titel:              Zitieren

Schau dir das mal an:
Bewegen in Verzeichnissen unter Unix


ist zwar für Unix gedacht aber sind denk ich viele Sachen drin die man leicht übertragen kann :)


bis denne, Schmelly
geeky
Mitglied

Benutzerprofil
Anmeldungsdatum: 04.05.2001
Beiträge: 5983
Beitrag geeky Mitglied 17:03:00 17.06.2002   Titel:              Zitieren

Mal sehen, ob ich ein Beispiel aus dem Kopf hinkriege:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HANDLE fHandle;
WIN32_FIND_DATA wfd;

// Erste Datei im Verzeichnis "c:\windows\desktop\" holen:
// aufgrund von "alten Zeiten" ist das erste immer ein "."
// kann also ignoriert werden.

fHandle=FindFirstFile("c:\\windows\\desktop\\*",&wfd);

// Ergebnis Nummer 2 ist auch uninteressant (ist ".."):
FindNextFile(fHandle,&wfd);

while (FindNextFile(fHandle,&wfd))
{
    if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
       // Datei ist keine, sondern ein Verzeichnis...
       // Hier könnte man dasselbe nochmal machen, um auch die
       // Unterverzeichnisse zu scannen ;-)

    }
    else
    {
        MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
    }
}
FindClose(fHandle);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HANDLE fHandle;
WIN32_FIND_DATA wfd;

// Erste Datei im Verzeichnis "c:\windows\desktop\" holen:
// aufgrund von "alten Zeiten" ist das erste immer ein "."
// kann also ignoriert werden.

fHandle=FindFirstFile("c:\\windows\\desktop\\*",&wfd);

// Ergebnis Nummer 2 ist auch uninteressant (ist ".."):
FindNextFile(fHandle,&wfd);

while (FindNextFile(fHandle,&wfd))
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
// Datei ist keine, sondern ein Verzeichnis...
// Hier könnte man dasselbe nochmal machen, um auch die
// Unterverzeichnisse zu scannen ;-)

}
else
{
MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
}
}
FindClose(fHandle);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HANDLE fHandle;
WIN32_FIND_DATA wfd;

// Erste Datei im Verzeichnis "c:\windows\desktop\" holen:
// aufgrund von "alten Zeiten" ist das erste immer ein "."
// kann also ignoriert werden.

fHandle=FindFirstFile("c:\\windows\\desktop\\*",&wfd);

// Ergebnis Nummer 2 ist auch uninteressant (ist ".."):
FindNextFile(fHandle,&wfd);

while (FindNextFile(fHandle,&wfd))
{
    if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
       // Datei ist keine, sondern ein Verzeichnis...
       // Hier könnte man dasselbe nochmal machen, um auch die
       // Unterverzeichnisse zu scannen ;-)

    }
    else
    {
        MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
    }
}
FindClose(fHandle);
Lenin2001
Mitglied

Benutzerprofil
Anmeldungsdatum: 17.03.2001
Beiträge: 87
Beitrag Lenin2001 Mitglied 08:56:00 18.06.2002   Titel:              Zitieren

Danke!! Hat super geklappt!!!!

Kann ja jemand mal in die FAQ stellen.........


Lenin
flenders
Moderator

Benutzerprofil
Anmeldungsdatum: 04.07.2002
Beiträge: 9235
Beitrag flenders Moderator 13:20:03 13.05.2005   Titel:              Zitieren

Da bei dem Code noch einige Fehler aufgetaucht sind, hier mal meine aktualisierte Variante:
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle=FindFirstFile("C:\\*",&wfd);

do
{
    // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
    // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist

    if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
    {
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
            // Datei ist keine, sondern ein Verzeichnis...
            // Hier könnte man dasselbe nochmal machen, um auch die
            // Unterverzeichnisse zu scannen ;-)

        }
        else
        {
            MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
        }
    }
}
while (FindNextFile(fHandle,&wfd));
FindClose(fHandle);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle=FindFirstFile("C:\\*",&wfd);

do
{
// Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
// hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist

if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
{
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
// Datei ist keine, sondern ein Verzeichnis...
// Hier könnte man dasselbe nochmal machen, um auch die
// Unterverzeichnisse zu scannen ;-)

}
else
{
MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
}
}
}
while (FindNextFile(fHandle,&wfd));
FindClose(fHandle);
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HANDLE fHandle;
WIN32_FIND_DATA wfd;

fHandle=FindFirstFile("C:\\*",&wfd);

do
{
    // Eintrag nur behandeln, wenn es nicht . oder .. ist (werden nur bei Unterverzeichnissen mit zurückgeliefert)
    // hier könnte man z.B. auch mit lstrcmp auf . und .. vergleichen, was allerdings nicht ganz so effizient ist

    if (!( (wfd.cFileName[0]=='.') && ( (wfd.cFileName[1]=='.' && wfd.cFileName[2]==0) || wfd.cFileName[1]==0 ) ))
    {
        if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            MessageBox(0,wfd.cFileName,"Folgendes Verzeichnis wurde gefunden:",0);
            // Datei ist keine, sondern ein Verzeichnis...
            // Hier könnte man dasselbe nochmal machen, um auch die
            // Unterverzeichnisse zu scannen ;-)

        }
        else
        {
            MessageBox(0,wfd.cFileName,"Folgende Datei gefunden:",0);
        }
    }
}
while (FindNextFile(fHandle,&wfd));
FindClose(fHandle);

_________________
( Moderator im Webzeugs- und WinAPI-Forum )
C/C++ Forum :: FAQ - WinAPI ::  Dateien in einem Verzeichnis auflisten (FindFirstFile/FindNextFile)   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können keine Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum nicht antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.