1:我在 看 一段 代码 ,这段代码是用来遍历文件夹  下面 的  文件 的  , D盘 下面有一个Record 文件夹  ,在 这个 Record下面  有  三个  文件夹,名字分别为 2009-10-26,2009-9-26,2009-8-26,在  2009-10-26下面 有一个 视频 录像文件 ,在  2009-9-26下面 有3个 视频 录像文件 ,在  2009-8-26下面 有1个 视频 录像文件 ,下面  是 一段  代码 ,我 看不懂  ,当 我 第一次 执行到 fdfile.IsDots()返回的 是 ".";进入 if后执行continue,从新开始,下一次执行到fdfile.IsDots()返回的 是 "..";继续返回到开始 循环处,再下一次执行fdfile.IsDots()时,返回值是0;为什么会这样我 不理解 ,能不能请高手帮我解释一下??、2:FindNextFile()在这里是 什么 意思找的是 哪一级目录下的 文件呢 ?
sDir.Format("%c:\\Record\\*.*","D") 
bFinded=fdfile.FindFile(sDir);//while (bFinded) 

bFinded=fdfile.FindNextFile();//
if (fdfile.IsDots())

continue; 

if (fdfile.IsDirectory())    //??? 
{                                     } 
                          } 

解决方案 »

  1.   

    1、
    你就这么理解,fdfile就像一个指针会移动的么。下次就不是那个文件了2、
    D:\\Record\\下面的文件么
      

  2.   

    1:楼上 的 说得不清楚啊 !怎么 移动 呢 fdfile??
      

  3.   

    当   我   第一次   执行到   fdfile.IsDots()返回的   是   ". ";进入   if后执行continue,从新开始,下一次执行到fdfile.IsDots()返回的   是   ".. ";继续返回到开始   循环处,再下一次执行fdfile.IsDots()时,返回值是0;为什么会这样我   不理解   ,能不能请高手帮我解释一下??、 
    ===========================
    有什么地方不理解呢?对一个文件夹来说,先找到的是这个文件夹本身,用"."表示,然后找到它的父目录,用".."表示,然后找到的就是这个文件夹下面的子文件夹或是文件了。上面的代码逻辑很清楚啊!2:FindNextFile()在这里是   什么   意思找的是   哪一级目录下的   文件呢   ?
    =====================
    FindNextFile()和FindFirstFile配合使用,它们查找D:\\Record\\这个目录下的文件和子目录,一至到全部找完,FindNextFile才会返回FALSE。
    这个函数并不能完成子目录的下一级查找,也就是说,D:\\Record\\下面的子目录中的文件它们是找不到的,如果想完成这个功能一般是用回调函数,或是用队列来实现。
      

  4.   

    要查找D:\\Record\\下面的子目录中的文件,用递归即可。
    例子看MSDN
      

  5.   


    #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;      // if it's a directory, recursively search it      if (finder.IsDirectory())
          {
             CString str = finder.GetFilePath();
             cout << (LPCTSTR) str << endl;
             Recurse(str);
          }
       }   finder.Close();
    }int main()
    {
       if (!AfxWinInit(GetModuleHandle(NULL), NULL, GetCommandLine(), 0))
          cout << "panic!" << endl;
       else
          Recurse(_T("C:"));
    }