为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
慕标5832272 2023-03-02 22:14:01
.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();
查看完整描述

2 回答

?
白衣染霜花

TA贡献1796条经验 获得超10个赞

CFileFind finder;
BOOL bWorking = finder.FindFile("*.*");//1
while (bWorking)
{
bWorking = finder.FindNextFile();//2
int i = m_listShowPicture.GetItemCount();//3
m_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); //1
if(bContinue)
{
filefd.FindNextFile();//2
SHGetFileInfo( 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());//3
m_listShowPicture.SetItemText(0,1,filefd.GetFilePath());
}
}


查看完整回答
反对 回复 2023-03-06
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

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

查看完整回答
反对 回复 2023-03-06
  • 2 回答
  • 0 关注
  • 203 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信