请问在MFC中的CFindFile有个FindNextFile(),为什么感觉有些文件没遍历到呢??

.h文件我创建5个,为什么只检测出4个,而当.h的文件名是英文就会检测出5个。是怎么回事findFile.FindFile(fileName "\\*.*");findFileCont.FindFile(fileName "\\*.*");//这里主要是求得要改名文件的个数while(findFileCont.FindNextFile()){if(!findFileCont.IsDirectory()){CString filePath;char Dirve[256] = "";char Dir[256] = "";char Tilte[256] = "";char Ext[256] = "";filePath = findFileCont.GetFilePath();_splitpath(filePath.GetBuffer(0), Dirve, Dir, Tilte, Ext);if(strcmp(Ext, ".h") == 0){fileNum ;}}}findFileCont.Close();

慕标5832272
浏览 204回答 2
2回答

白衣染霜花

CFileFind finder;BOOL bWorking = finder.FindFile("*.*");//1while (bWorking){bWorking = finder.FindNextFile();//2int i = m_listShowPicture.GetItemCount();//3m_listShowPicture.InsertItem(i,"");m_listShowPicture.SetItemText(i,0,finder.GetFileName());}上面程序完成文件遍历。finder.FindNextFile();使用n次,找到的文件就是第n个。即如果想使用CFileFind的成员函数,必须先初始化一次。第一次用FindNextFile();找到是第一个文件,不是第二个。总是这样一个过程:1:Find 2:Next 3:调用由路径找到文件信息void CMPEG2EncodeDlg::AddFileLink(CString filepath){SHFILEINFO fileinfo;//文件信息结构,用来获取文件的图标CFileFind filefd;//文件查找类BOOL bContinue = filefd.FindFile(filepath); //1if(bContinue){filefd.FindNextFile();//2SHGetFileInfo( filefd.GetFilePath(),0,&fileinfo,sizeof(fileinfo),SHGFI_ICON);int i = m_imagelist.Add(fileinfo.hIcon);//取得文件图标m_listShowPicture.InsertItem(0,"",i);m_listShowPicture.SetItemText(0,0,filefd.GetFileName());//3m_listShowPicture.SetItemText(0,1,filefd.GetFilePath());}}

小怪兽爱吃肉

FindNextFile的返回值比较麻烦,他是刚刚好遍历到最后一个文件的时候,给你返回false,也就意味着最后一个文件还没处理就退出while了。所以得写成这样:BOOL bRes = ff.FindFile(.....);while(bRes) {bRes = ff.FindNextFile();// 遍历到最后一个文件的时候,bRes变成false。下面先处理了这个文件,之后才退出循环。if (!ff.IsDirectory()){...}}
打开App,查看更多内容
随时随地看视频慕课网APP