177上位机VC MFC删除指定类型文件
177上位机VC MFC删除指定类型文件 功能展示 有时我们要删除指定文件夹内指定的类型文件,比如要删除后缀为.CPP或.H或.TXT的文件,我们就得在目录内迭代查找与删除文件,我们当前例程实现这一功能,效果如图; 要点提示 文件夹内文件的迭代查找可以用CFileFind的成员函数来完成; 查找的文件后缀有分大小写,可以使用Cstring类的MakeLower(),MakeUpper()实现大写,小写的转变; 文件的删除可以用函数DeleteFile()实现 实现功能 1.新建基于对话框的应用程序 2.拖拽两编辑框ID为IDC_EDIT2,IDC_EDIT1用于输入要查找的文件名及查找目录; 拖拽一按钮<浏览>用于浏览查找的目录,拖拽按钮<删除>用于删除已打开的文件; 拖拽一列表框ID为IDC_LIST1,用于罗列出已删除的文件路径; 按钮函数为 - void CGkbc8Dlg::OnExplor()
- {
- BROWSEINFO bif;
- char buf[MAX_PATH];
- ZeroMemory(buf,MAX_PATH);
- bif.hwndOwner= GetSafeHwnd();
- bif.iImage=0;
- bif.lParam=0;
- bif.lpfn=NULL;
- bif.lpszTitle="Choose Folder";
- bif.pidlRoot=0;
- bif.pszDisplayName=buf;
- bif.ulFlags=BIF_EDITBOX;
- LPITEMIDLIST pList=NULL;
- pList=SHBrowseForFolder(&bif);
- if(NULL!=pList)
- {
- SHGetPathFromIDList(pList,buf);
- SetDlgItemText(IDC_EDIT2,buf);
- }
- }
复制代码- void CGkbc8Dlg::OnDelete()
- {
- CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
- pListBox->ResetContent();
-
- CString sPathName,sFileName;
- GetDlgItemText(IDC_EDIT1,sFileName);
- GetDlgItemText(IDC_EDIT2,sPathName);
- FindFile(sPathName,sFileName);
- //
- CString sPath;
- int nCount = pListBox->GetCount();
- for(int i=0;i<nCount;i++)
- {
- pListBox->GetText(i,sPath);
- DeleteFile(sPath);
- }
- }
- BOOL CGkbc8Dlg::FindFile(CString sDir,CString sFileName)
- {
- CString sTemp;//路径改为\*.*形式
- if(sDir.Right(1)!="\")
- sTemp.Format("%s\\*.*",sDir);
- else
- sTemp.Format("%s*.*",sDir);
- //
- CString sFindFileName;//找到的文件名
- CFileFind findfile;
- BOOL bfind=findfile.FindFile(sTemp);
- while(bfind)
- {
- bfind=findfile.FindNextFile();
- sFindFileName = findfile.GetFileName();
- sFileName.MakeUpper();
- CString sUFileName = sFileName;//大写
- sFileName.MakeLower();
- CString sLFileName = sFileName;//小写
-
复制代码- if(sFileName==sFindFileName||sFindFileName.Find(sLFileName)!=-1||sFindFileName.Find(sUFileName)!=-1)
- {
- CListBox* pListBox = (CListBox*)GetDlgItem(IDC_LIST1);
- pListBox->AddString(findfile.GetFilePath());
- }
- if(findfile.IsDirectory()&&!findfile.IsDots())
- {
- FindFile(findfile.GetFilePath(),sFileName);
- }
- }
- return bfind;
- }
复制代码我们来演示下功能实现的整个过程
|