手抄报 安全手抄报 手抄报内容 手抄报图片 英语手抄报 清明节手抄报 节约用水手抄报

MFC应用实例:[57]遍历目录下的每个文件

时间:2024-10-30 09:04:47

1、新建一个基于对话框的应用程序,工程名为CheckFileDemo。

MFC应用实例:[57]遍历目录下的每个文件

2、界面设计如下,添加三个按钮,两个编辑框,一个列表框

MFC应用实例:[57]遍历目录下的每个文件

3、双击“>>”按钮添加响应函数OnFolder(),在响应函数OnFolder()中添加一下代码:void CCheckFileDemoDlg::OnFolder(){ CString strFilter; strFilter="All Files(*.*)|*.*||"; CFileDialog dlg(TRUE, NULL, NULL, OFN_EXPLORER|OFN_HIDEREADONLY| OFN_ENABLESIZING|OFN_FILEMUSTEXIST,strFilter); if(dlg.DoModal() == IDOK ) //显示打开文件对话框 { m_folder=dlg.GetPathName(); UpdateData(false); } }

MFC应用实例:[57]遍历目录下的每个文件

4、在CCheckFileDemoDlg类中添加FindFile()函数void CCheckFileDemoDlg::FindFile(CString Curdir){ HANDLE hfile;//查找文件句柄 WIN32_FIND_DATA wfdata;//文件信息结构 BOOL IsOver=false;//查找过程结束标志 CString strname;//文件名 CString strfull;//全路径 hfile=FindFirstFile((LPCTSTR)("*.*"),&wfdata);//查找第一个文件 if(hfile==INVALID_HANDLE_VALUE) IsOver=true;//查找过程结束 while(!IsOver) { strname.Format("%s",wfdata.cFileName);//获取找到的文件名 strfull=Curdir+"\\"+strname;//全路径 if((wfdata.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY)&&(wfdata.cFileName[0]!=_TEXT('.')))// { SetCurrentDirectory(wfdata.cFileName); FindFile(strfull);//递归调用 SetCurrentDirectory("..");//返回当前目录 } else if(wfdata.cFileName[0]!=_TEXT('.')) m_fileList.AddString(strfull); IsOver=!FindNextFile(hfile,&wfdata);//查找下一个文件 } FindClose(hfile);//关闭句柄}

MFC应用实例:[57]遍历目录下的每个文件

5、双击“遍历文件”按钮添加响应函数OnSearch(),在响应函数OnSearch()中添加一下代码:void CCheckFileDemoDlg::OnSearch() //遍历当前目录下的文件{ CString oldDir;//保存原始的当前路径 UpdateData(true);//获取输入数据 GetCurrentDirectory(50,(LPTSTR)(LPCTSTR)oldDir);//获取当前路径 if(!SetCurrentDirectory((LPCTSTR)m_folder)||m_folder.IsEmpty())//如果有输入 { m_folder=(LPCTSTR)oldDir; UpdateData(false); } while(m_fileList.GetCount()!=0)//清空列表框 { int index=m_fileList.GetTopIndex(); m_fileList.DeleteString(index); } FindFile(CString(m_folder));//开始查找 m_filenum=m_fileList.GetCount();//获取文件数目 UpdateData(false);//编辑框显示 SetCurrentDirectory((LPCTSTR)oldDir);//恢复当前目录}

MFC应用实例:[57]遍历目录下的每个文件

6、遍历CheckFileDemo的文件目录,程序运行如下:

MFC应用实例:[57]遍历目录下的每个文件
© 手抄报圈