Datei - Alle Verzeichnisse sowie Dateinamen ausgeben?



  • Tach auch,

    ich suche eine Function um einen Datenträger z.B. Eine CD auszulesen. Dabei soll die Function alle daruf enhaltenen Dateien sowie die vorhandenen Verzeichnisse zurückgeben?

    Wie stell ich das an??

    Danke.

    ILM



  • Hi,

    CFileFind dürfte dir helfen.

    Hier ist ein schönes Beispiel aus MSDN:

    #include <afx.h>
    #include <iostream>
    
    using namespace std;
    
    void Recurse(LPCTSTR pstr)
    {
       CFileFind finder;
    
       // build a string with wildcards
       CString strWildcard(pstr);
       strWildcard += _T("\\*.*");
    
       // start working for files
       BOOL bWorking = finder.FindFile(strWildcard);
    
       while (bWorking)
       {
          bWorking = finder.FindNextFile();
    
          // skip . and .. files; otherwise, we'd
          // recur infinitely!
    
          if (finder.IsDots())
             continue;
    
          // if it's a directory, recursively search it
    
          if (finder.IsDirectory())
          {
             CString str = finder.GetFilePath();
             cout << (LPCTSTR) str << endl;
             Recurse(str);
          }
       }
    
       finder.Close();
    }
    
    void main()
    {
       if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0)
          cout << "panic!" << endl;
       else
          Recurse(_T("C:"));
    }
    

    Gruß, Volle.



  • Bitte zu den FAQ, danke images/smiles/icon_smile.gif



  • Hier die MFC-Version

    int threadklasse::ladefiles(CString nextdir)
    {
    
        CString curdir = nextdir;
        CString appname;
        CString ftpfilename;
        CString winfilename;
    
        CFileFind ftpFind;
    
            BOOL bContinue = ftpFind.FindFile(curdir + "\\*.*");
    
    while(bContinue > 0)
    {
        bContinue = ftpFind.FindNextFile();
    
        appname = ftpFind.GetFileName();
    
        if (appname == "." || appname == "..")
        {
        }
        else
        {
    
            if (ftpFind.IsDirectory() != 0)
            {
                nextdir = curdir + "\\" + appname;
    
                ladefiles(nextdir);
            }
            else
            {
    
                    // In appname steht der Filename
                     // Mit ftpFind.GetFilePath());  bekommt man den Pfad und den Filenamen
    
            }
        }
    
    }
    
    ftpFind.Close();
    
    return 1;
    
    }
    

    [ Dieser Beitrag wurde am 18.12.2002 um 00:51 Uhr von Unix-Tom editiert. ]



  • ich denke die antworten reichen ihm... bittte in die FAQ images/smiles/icon_smile.gif




Anmelden zum Antworten