//将选择的文件夹路径保存在此变量中
CString m_FileSrc;
TCHAR Buffer[MAX_PATH];
BROWSEINFO bi;
ZeroMemory(&bi, sizeof(BROWSEINFO));
bi.hwndOwner = NULL;
bi.ulFlags = BIF_RETURNONLYFSDIRS; //要求返回文件系统的目录
bi.pszDisplayName = Buffer; //此参数如为NULL则不能显示对话框
bi.lpszTitle = _T("请选择文件夹");
bi.lpfn = NULL;
bi.iImage=IDR_MAINFRAME;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
//取得文件夹路径到Buffer里
m_FileSrc = Buffer;//将文件夹路径保存在一个CString对象里
}
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc)))
return;
//释放内存
lpMalloc->Free(pIDList);
lpMalloc->Release();
//逐个列举文件夹内所有txt文件
CString strFileName, strFileTemp, strSuffixTemp;
CFileFind findFile;
if(m_FileSrc.Right(1)!='\\')
strFileTemp = m_FileSrc += '\\';
else
{
m_FileSrc.Right(1) = '\\';
strFileTemp = m_FileSrc;
}
strFileTemp += "*.*";
int nIsFind=findFile.FindFile(strFileTemp); //执行文件搜索
while(nIsFind)
{
nIsFind = findFile.FindNextFile(); //查找下一个文件
if(findFile.IsDirectory()) //若为目录,结束本次循环
continue;
strFileName =findFile.GetFileName(); //获取文件名称,包括后缀
if(strFileName==".." || strFileName==".")
continue;
strSuffixTemp = strFileName.Mid(strFileName.GetLength()-3,3);
//筛选txt文本文件来处理
if(strSuffixTemp != "txt" && strSuffixTemp != "TXT")
continue;
strFileName = m_FileSrc + strFileName;
//对文件进行后续处理
}MFC:选择文件夹,并列举文件夹中的内容,进行处理
枚举文件夹中TXT文件
最新推荐文章于 2024-11-25 12:12:10 发布
本文介绍了一种使用C++编程语言枚举指定文件夹内所有TXT文件的方法。通过调用Windows API函数,实现文件夹的选择、路径获取及文件过滤等功能。
297

被折叠的 条评论
为什么被折叠?



