关于CFileFind类的问题

nickysoft 2002-06-28 01:47:02
我先FindFile()某个目录,然后再FindNextFile(),循环查找。
但是第一个文件他找不到,其他的文件都可以找到。
为什么?请教
...全文
464 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohunhun2001 2002-08-11
  • 打赏
  • 举报
回复
bug吧,我也发现这样的问题
RedBiaoJi 2002-07-04
  • 打赏
  • 举报
回复
CFileFind tem;
int a = tem.findfile(..);
if(a)
{
do
{
int s = tem.findnextfile();
filename = tem.getfilename();
if(filename=="."||filename=="..")
{
...//跳过"."和".."
}
else
{
...//处理文件
}
}while(s);
tem.close();
}

这个方法,我用了很长时间了!
neosu 2002-07-04
  • 打赏
  • 举报
回复
CFileFind cff;
BOOL b = cff.FindFile("c:\\*.txt");
while(b)
{
b = cff.FindNextFile();
cff.GetFileTitle();//其实这是上一个文件的内容
}

cff.Close();
gzwy 2002-07-04
  • 打赏
  • 举报
回复
我知道了
这样用(描述一下);
if(FileFind()...)
{
FindNextFile()
do
{
GetFileTitle()
}
while(FindNextFile());

}
保证不会漏!
gzwy 2002-07-04
  • 打赏
  • 举报
回复
我发现第一个文件也会丢失,怎么回事,请高手指点!
kingzai 2002-06-28
  • 打赏
  • 举报
回复
//example:
CFileFind finder;
while (bResult)
{
//拷贝所有文件
bResult=finder.FindNextFile();//查找下一个文件
if(finder.IsDots())
continue;
if(finder.IsDirectory())
TemplateName=finder.GetFileTitle();
m_TemplateArray.Add(TemplateName);//将模板名加入到字符串列表
}
nickysoft 2002-06-28
  • 打赏
  • 举报
回复
我就是先用FindFile(PathName + "*.*");的,然后就FindNextFile,
首先找到的是“.”和“..”,然后就是除第一个文件外的所有文件名,就是第一个文件找不到。
duankuanjun 2002-06-28
  • 打赏
  • 举报
回复
这个是我在ISAPI项目工程中做的一个删除指定文件夹下的所有文件的一个涵数,你看一下有没有帮助,此函数我一直在用,是没有问题的

void CZuJuan::E_DeleteTmpFile()
{
ShowHead("删除临时文件");
char SourcePathName[MAX_PATH];
char FindPath[MAX_PATH];
WIN32_FIND_DATA FindFile;
HANDLE hFile=NULL;
Send("<p>删除临时文件信息提示:</p>");
if(ReadIniFile()==1)
{
strcpy(FindPath,IniInfo.HtmlFilePath);
strcat(FindPath,"\\*.bmp");
hFile=FindFirstFile(FindPath,&FindFile);
if(hFile!=NULL||hFile!=INVALID_HANDLE_VALUE)
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
while(FindNextFile(hFile,&FindFile))
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
}
}
FindClose(hFile);
strcpy(FindPath,IniInfo.HtmlFilePath);
strcat(FindPath,"\\*.jpg");
hFile=FindFirstFile(FindPath,&FindFile);
if(hFile!=NULL||hFile!=INVALID_HANDLE_VALUE)
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
while(FindNextFile(hFile,&FindFile))
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
}
}
FindClose(hFile);
strcpy(FindPath,IniInfo.HtmlFilePath);
strcat(FindPath,"\\*.gif");
hFile=FindFirstFile(FindPath,&FindFile);
if(hFile!=NULL||hFile!=INVALID_HANDLE_VALUE)
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
while(FindNextFile(hFile,&FindFile))
{
sprintf(SourcePathName,"%s\\%s",IniInfo.HtmlFilePath,FindFile.cFileName);
if(DeleteFile(SourcePathName))
{
str.Format("<p>删除临时文件:%s!</p>",SourcePathName);
Send(str);
}
}
}
FindClose(hFile);
}
Send("<p align=center><a href='javascript:window.close()'>【关闭窗口】</a></p>");
ShowEnd();
}
Jasanye 2002-06-28
  • 打赏
  • 举报
回复
先用FindFile()查找某个文件或目录,当返回值>0是表示找到这个文件,此时可用IsDirectory()判断是否为目录。但要查找下一个文件或目录时才用FindNextFile()Jasanye
Jasanye 2002-06-28
  • 打赏
  • 举报
回复
先FindFile()某个文件或目录,返回值>0则表示找到这个文件或目录,可用IsDirectory()判断是否为目录;然后才用FindNextFile()查找下一个文件或目录Jasanye
seanhut 2002-06-28
  • 打赏
  • 举报
回复
当findnextfile返回false时,表示此时得到最后一个文件,不是已经没有文件了
wistaria 2002-06-28
  • 打赏
  • 举报
回复
try
FindFile(PathName + "*.*");
nuaawyd 2002-06-28
  • 打赏
  • 举报
回复
你可能要在获得文件名之前先FindNextFile(),
nuaawyd 2002-06-28
  • 打赏
  • 举报
回复
你可能要在获得文件之前先findnextfile()

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧