Dateiname auslesen



  • Hi @ all,

    wie kann ich denn die Dateinamen aller Dateien in einem Ordner auslesen
    und in strings kopieren???

    Gruß



  • MSDN: CFileFind
    In der FAQ steht bestimmt auch was dazu



  • Hallo goochie !

    Ich würde es statt mit einem statischen String-Array mit einem flexibleren CArray machen:

    #include "afxtempl.h"       // wird für CArray benötigt
    

    Diese Codezeile wird in stdafx.h eingefügt um auf CArrays zugreifen zu können.

    CArray<CString, CString> FileList;                            // Dynamische Array-Liste für Filenamen
    
        WIN32_FIND_DATA fd;                                         // Datenstruktur definieren
        CString sPath = _T("C:\\ASM\\");                            // Zielpfad als CString speichern
        HANDLE hFind = ::FindFirstFile(sPath + "*.*",&fd);          // und erstes File im Verzeichnis suchen
    
        while(::FindNextFile(hFind,&fd) == TRUE)                    // ist noch eine Datei vorhanden?
            if(!(fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))   // wenn kein Directory dann weiter
                FileList.Add(fd.cFileName);                         // Filename in das CArray einfügen
    

    Dieser Codeschnipsel füllt ein lokales CArray namens FileList mit allen Filenamen im Verzeichnis C:\ASM\. Die Deklaration <CString, CString> beim CArray bedeutet mit welchem Datentyp es "gefüttert" wird und welchen Datentyp es wieder "ausspucken" soll.

    for (int nIndex = 0; nIndex < FileList.GetCount(); nIndex++)                 // alle Filenamen im Array abarbeiten
            ((CListBox*)GetDlgItem(IDC_LIST1))->AddString(FileList.GetAt(nIndex));       // und in eine ListBox ausgeben
    

    Diese zwei Zeilen gibt den Inhalt des CArray in einer ListBox aus.

    Gruß MacReeg

    [ Dieser Beitrag wurde am 20.09.2002 um 15:46 Uhr von MacReeg editiert. ]



  • CFileFind ff;
    ff.FindFile(strPathIn);
    
    strAllFile.Empty();
    
    while (ff.FindNextFile())
    {
        //alle Dateinamen werden in strAllFile übergeben und durch Semikolon getrennt
        strAllFile += ff.GetFileName();
        strAllFile += ";";
    }
    

    Das wäre eine Möglichkeit



  • Ein Semikolon ist eine schlecht Idee, da es ja Bestandteil vom Dateiname haben kann. Wenn dann schon eher ein '|'.

    Oder einfach ein CStringArray;



  • CFileFind find;
    CStringArray files;
    CString appname;
    BOOL bContinue = find.FindFile(ORDNER);
    while(bContinue > 0)
    {
        bContinue = find.FindNextFile();
        appname = find.GetFileName();
        if (appname == "." || appname == "..")
        {
        }
        else
        {
            files.Add(appname);
        }
    }
    

    esay to do... 🙂


Log in to reply