方法一、利用WIN32的FindFirstFile与FindNextFile
FindFirstFile函数是查找到目录下的第一个文件或目录,FindNextFile函数是查找下一文件或目录。
根据文件名查找文件。该函数到一个文件夹(包括子文件夹)去搜索指定文件 如果要使用附加属性去搜索文件的话 可以使用FindFirstFileEx函数。
HANDLE FindFirstFile(
LPCTSTR lpFileName,//filename 文件名(包括路径)
LPWIN32_FIND_DATA lpFindFileData//databuffer 指向一个用于保存文件信息的结构体
);
返回值:
如果调用成功返回一个句柄,可用来做为FindNextFile或 FindClose参数
调用失败 返回为INVALID_HANDLE_VALUE(即-1) ,可调用GetLastError来获取错误信息
如果要用此函数去查找某类型的文件名时,举例代码如下:
查找D盘下的所有txt文件
WIN32_FIND_DATA fileinfo;
DWORD errorcode = 0;
HANDLE hFile;
TempPath="D:\\test\\*.txt";
hFile = FindFirstFile(TempPath,&fileinfo);
m_listbox.ResetContent();
while(hFile!=INVALID_HANDLE_VALUE&&errorcode!=ERROR_NO_MORE_FILES)
{
//
m_listbox.AddString(fileinfo.cFileName);
FindNextFile(hFile,&fileinfo);
errorcode=GetLastError();
}
if(errorcode==ERROR_NO_MORE_FILES)
{
MessageBox("检索结束");
}
CloseHandle(hFile);
方法二、利用C语言函数_findfirst 和 _findnext
_finddata_t File;
long FileHandle;
TempPath="D:\\test\\*.txt";
i = FileHandle = _findfirst(TempPath,&File);
m_listbox.ResetContent();
while( i != -1 )
{
m_listbox.AddString(File.name);
i = _findnext( FileHandle, &File );
}
_findclose(FileHandle);
方法三、利用CFileFind类
CFileFind finder;
BOOL bWorking = finder.FindFile(_T("D:\\test\\*.txt"));
while (bWorking)
{
bWorking = finder.FindNextFile();
m_listbox.AddString(finder.GetFileName());
}