VC遍历文件夹下所有文件和文件夹

作者在 2008-12-14 18:29:34 发布以下内容

void find(char *lpPath)
{
char szFind[MAX_PATH];
char szFile[MAX_PATH];
CString info;
    WIN32_FIND_DATA FindFileData;

    strcpy(szFind,lpPath);
    strcat(szFind,"\\*.*");

    HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
    if(INVALID_HANDLE_VALUE == hFind)    return;
   
    while(TRUE)
    {
        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
            if(FindFileData.cFileName[0]!='.')
            {
                strcpy(szFile,lpPath);
                strcat(szFile,"\\");
                strcat(szFile,FindFileData.cFileName);
                find(szFile);
            }
        }
        else
        {      //deal with FindFileData.cFileName
        }
        if(!FindNextFile(hFind,&FindFileData))    break;
    }
    FindClose(hFind);

}

 

 

 

 

=====================================================================

发现有很多优化软件 在做删除 系统冗余文件时 会把LJ文件的名字 显示在一个列表中 供用户删除.
这 就用到了遍历文件夹下所有文件的技术了. 于是就像自己写一个出来. 但以前都没接触过 所以查了下MSDN 输入 findfile尽然有这样的函数 暗喜还有代码实例 稍微改了下一点点的代码 如果再修改下 可以做成删除特定的一组文件 也可以自己做一个删除系统LJ的软件 有待大家去发挥想像力了
对此函数说明如下:
Call this member function to open a file search.


virtual BOOL FindFile(
LPCTSTR pstrName = NULL,
DWORD dwUnused = 0
);

After calling FindFile to begin the file search, call FindNextFile to retrieve subsequent files. You must call FindNextFile at least once before calling any of the following attribute member functions:

说的是此函数用于开始一个文件查找,当查找到之后,可以调用FindNextFile连续得查找一组文件
=============================

#include <afxwin.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;

           CString sFileName = finder.GetFileName();
          cout << (LPCTSTR)sFileName << endl;//输出查找文件夹下的所有文件名

  }

   finder.Close();
}

int main()
{
  if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0))//初始化MFC

      cout << "panic!" << endl;
  else
       Recurse(_T("C:"));
        return 0;
}

vc | 阅读 10399 次
文章评论,共0条
游客请输入验证码