MFC:选择文件夹,并列举文件夹中的内容,进行处理

本文介绍了一种使用C++编程语言枚举指定文件夹内所有TXT文件的方法。通过调用Windows API函数,实现文件夹的选择、路径获取及文件过滤等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

	//将选择的文件夹路径保存在此变量中	
	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;
		//对文件进行后续处理
	}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值