EVC下如何根据文件名和扩展名查找文件
我利用FindFirstFile和FindNextFile 系统中已存在的文件,代码如下:
CString cFileList[50];
int nFileTotalCount;
nFileTotalCount=0;
HANDLE hFile = NULL;
WIN32_FIND_DATA lpFindFileData;
// BOOL bContinue = FALSE;
int i = 0;
for(i=0;i <50;i++)
cFileList[i]=_T("");
i = 0;
hFile = FindFirstFile(_T("*.kwj"),&lpFindFileData);
while (1)
{
cFileList[i]=lpFindFileData.cFileName;
if (FindNextFile(hFile,&lpFindFileData)==0)
{
FindClose(hFile);
break;
}
i++;
nFileTotalCount++;
}
return nFileTotalCount;
问题1:
如果我输入文件的扩展名,可以查找到该扩展名文件。但是返回的nFileTotalCount比实际数目少1,比如应该是2,但返回的是1.我在系统中建立了1.kwj和2.kwj文件,单步执行时会先找到2.kwj,在下一个循环中,lpFindFileData.cFileName=1.kwj,但是FindNextFile(hFile,&lpFindFileData)返回为0.
问题2:hFile = FindFirstFile(_T("*.kwj"),&lpFindFileData);
如果根据文件名称查找,不能找到该文件,但是实际情况是该文件确实存在。比如hFile = FindFirstFile(_T("1.kwj"),&lpFindFileData); ,此时返回的nFileTotalCount=0;
问题3:
我最开始使用的是CFileFind类,但编译时错误,提示没有CFileFind类,将afx.h放到stdafx.h中也不行。
大家来看看我的程序哪里出了问题,不胜感激!!!
[解决办法]
FindFirstFile 就会找到第一个文件,你这个没有算,当然会少1. 调用FindFirstFile后应该判断hFile是不是等于INVALID_HANDLE_FILE 如果不等于就找到了第一个文件.所以nFileTotalCount++; 应该放在FindNextFile前面
[解决办法]