主题:MFC查找文件
cat123
[专家分:0] 发布于 2009-04-11 23:37:00
在使用MFC中CFileFind 查找文件时,一般都是FindFile和FindNextFile配合使用,得到目录下的所有文件。但我想查找一个确定的文件,得到该文件的大小、图标等信息时,该怎么办?
例如:
BOOL bfinded=filefd.FindFile("C:\a.txt");
if(filefd.IsDirectory()&&!filefd.IsDots())
就会出现问题,怎么解决?
回复列表 (共1个回复)
沙发
myjianghe [专家分:470] 发布于 2009-05-05 15:08:00
给你个例子,计算文件夹下文件个数
int FindFileNumber( )
{
CString strPath, strPattern;
BYTE data[8] = {'\0'};
BOOL bRC = TRUE;
int i = 0 ;
HANDLE hFind = NULL;
WIN32_FIND_DATA FindFileData;
//strPattern = "D:\\33e\\*.*";//目录
hFind = ::FindFirstFile(strPattern, &FindFileData); // strat search
if(hFind == INVALID_HANDLE_VALUE)
{
LPVOID msg;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, GetLastError(),
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&msg, 0, NULL);
::LocalFree(msg);
return -1;
}
strPath = FindFileData.cFileName;//取得文件名
while(bRC)
{
bRC = ::FindNextFile(hFind, &FindFileData);
if(bRC)
{
strPath = FindFileData.cFileName;//取得文件名
i++;
}
else
{
DWORD err = ::GetLastError();
if(err != ERROR_NO_MORE_FILES)
{
LPVOID msg;
::FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
NULL, err,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&msg, 0, NULL);
::LocalFree(msg);
::FindClose(hFind);
return -1;
}
}
}
::FindClose(hFind);
return i-1;
}
我来回复