当我在我的程序里面知道了一个文件夹的路径以后,如何才能知道里面都有些什么文件,我需要知道这个文件夹里面每一个文件的文件名和扩展名,怎么做???
希望各位高手帮忙!!!

解决方案 »

  1.   

    CFileFind//copy from 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:"));
    }
      

  2.   

    在MSDN中搜FindFirst,应该有例程
      

  3.   

    WIN32_FIND_DATA FileData; 
    HANDLE hSearch; 
    DWORD dwAttrs; 
    char szDirPath[] = "c:\\TEXTRO\\"; 
    char szNewPath[MAX_PATH]; 
    char szHome[MAX_PATH]; 
     
    BOOL fFinished = FALSE; 
     
    // Create a new directory. 
     
    if (!CreateDirectory(szDirPath, NULL)) 

        ErrorHandler("Couldn't create new directory."); 

     
    // Start searching for .TXT files in the current directory. 
     
    hSearch = FindFirstFile("*.txt", &FileData); 
    if (hSearch == INVALID_HANDLE_VALUE) 

        ErrorHandler("No .TXT files found."); 

     
    // Copy each .TXT file to the new directory 
    // and change it to read only, if not already. 
     
    while (!fFinished) 

        lstrcpy(szNewPath, szDirPath); 
        lstrcat(szNewPath, FileData.cFileName); 
        if (CopyFile(FileData.cFileName, szNewPath, FALSE))
        { 
            dwAttrs = GetFileAttributes(FileData.cFileName); 
            if (!(dwAttrs & FILE_ATTRIBUTE_READONLY)) 
            { 
                SetFileAttributes(szNewPath, 
                    dwAttrs | FILE_ATTRIBUTE_READONLY); 
            } 
        } 
        else 
        { 
            ErrorHandler("Couldn't copy file."); 
        } 
     
        if (!FindNextFile(hSearch, &FileData)) 
        {
            if (GetLastError() == ERROR_NO_MORE_FILES) 
            { 
                MessageBox(hwnd, "No more .TXT files.", 
                    "Search completed.", MB_OK); 
                fFinished = TRUE; 
            } 
            else 
            { 
                ErrorHandler("Couldn't find next file."); 
            } 
        }

     
    // Close the search handle. 
     
    if (!FindClose(hSearch)) 

        ErrorHandler("Couldn't close search handle."); 

      

  4.   

    CFileFind finder;
       BOOL bWorking = finder.FindFile("C:\\windows\\*.*");
       while (bWorking)
       {
          bWorking = finder.FindNextFile();
      MessageBox(finder.GetFileName());
         }
      

  5.   

    CFileFind finder;
    CString m_strFindPath = "c:\\test";BOOL bWork = finder.FindFile("c:\\test",0);
    while(bWork)
    {
       bWork = finder.GetNextFile();
       if(finder.IsDots())
       {
           continue;
       }
       if(finder.IsDirectory( ))
       {
            //用第归
       }
       CString str1; //获得文件路径
       str1 = finder.GetFilePath( );
    }
    具体用法查msdn中CFileFind类的各个函数
    ^-^
     
      

  6.   

    CString m_strFindPath = "c:\\test";改成CString m_strFindPath = "c:\\test\\*.*";