MFC的文件操作——获取指定文件夹下面所有文件(夹)路径和删除指定文件夹下面所有文件

目录

1.获取指定文件夹下面所有文件路径

 2.删除指定文件夹下面所有文件

3.MFC的CString 字符串操作

4.MFC的 Int类型 与 Htuple类型数据之间转换

 5.上述提及的函数应用

6.MFC与Halcon联合编程,获取halcon异常

7.MFC获取指定路径下的文件夹路径

          ①、文件夹路径获取方式

②、打开文件——文件路径获取方式


1.获取指定文件夹下面所有文件路径

//读取文件夹下的所有文件路径
void getFiles(CString path, vector<CString>& files)
{
	CFileFind find;
	BOOL IsFind = find.FindFile(path + _T("/*.*"));
	while (IsFind)
	{
		IsFind = find.FindNextFile();
		if (find.IsDots())
		{
			continue;
		}
		else
		{
			CString filename = _T("");
			CString fullname = _T("");
			filename = find.GetFileName();
			fullname = path + filename;
			files.push_back(fullname);
		}
	}
}

 2.删除指定文件夹下面所有文件

//删除指定文件夹下面所有文件
void CDirectory::DeleteDirectory(const CString &strPath)

{

	CFileFind tempFind;

	TCHAR sTempFileFind[MAX_PATH] = { 0 };

	wsprintf(sTempFileFind, _T("%s\\*.*"), strPath);

	BOOL IsFinded = tempFind.FindFile(sTempFileFind);

	while (IsFinded) 

	{ 

		IsFinded = tempFind.FindNextFile(); 



		if (!tempFind.IsDots()) 

		{ 

			TCHAR sFoundFileName[200] = { 0 }; 

			_tcscpy(sFoundFileName, tempFind.GetFileName().GetBuffer(200)); 



			if (tempFind.IsDirectory()) 

			{ 

				TCHAR sTempDir[200] = { 0 }; 

				wsprintf(sTempDir, _T("%s\\%s"),strPath, sFoundFileName); 

				DeleteDirectory(sTempDir); 

			} 

			else 

			{ 

				TCHAR sTempFileName[200] = { 0 }; 

				wsprintf(sTempFileName, _T("%s\\%s"), strPath, sFoundFileName); 

				DeleteFile(sTempFileName); 

			} 

		} 

	} 


	tempFind.Close(); 

//若不想删除当前文件夹,则注释掉下面一句
	if(!RemoveDirectory(strPath))

		return false;


	return true;

}

3.MFC的CString 字符串操作

CString strModelpath, strMax, strMin;
strModelpath.Format(("./printcheck_model/model-%d.shm"), hv_i[0].I());
strMax.Format(("./printcheck_model/ModelMax-%d.bmp"), hv_i[0].I());
strMin.Format(("./printcheck_model/ModelMin-%d.bmp"), hv_i[0].I());

4.MFC的 Int类型 与 Htuple类型数据之间转换

int k = (hv_Int[hv_Index]).I();
CString sr = Files[(hv_Int[hv_Index]).I()];
ReadImage(&ho_Image, HTuple(Files[(hv_Int[hv_Index]).I()]));

 5.上述提及的函数应用

vector<CString> Files;
getFiles("D:/Desktop/文字缺损检测/产品0(√)/文字部分好品/", Files);
DeleteDirectory("./printcheck_model");

6.MFC与Halcon联合编程,获取halcon异常

try
{
	ReadShapeModel(strModelpath.GetBuffer(), &hv_ModelID);

}
	catch (const HException& H)
{
	HString str = H.ErrorText();
	string a = string(str.ToLocal8bit());
}

7.MFC获取指定路径下的文件夹路径

 文件夹路径文件路径是不一样的,前者可以仅选中某个文件夹,从而获得该文件夹的路径,但后者必须要打开某个指定的文件,如.jpg图像,这样才能获得文件路径。所以使用哪个程序,视你的需求而定。

①、文件夹路径获取方式

CString m_strFileOut = _T("");  //初始化适应Unicode
 TCHAR szSelected[MAX_PATH];//用来存放文件夹路径  
 BROWSEINFO bi;  
 LPITEMIDLIST pidl;  
 bi.hwndOwner = this->m_hWnd;  
 bi.pidlRoot = NULL;  
 bi.pszDisplayName = szSelected;  
 bi.lpszTitle = _T("选择输出文件路径");  
 bi.ulFlags = BIF_RETURNONLYFSDIRS;  
 bi.lpfn = NULL;  
 bi.lParam = NULL;  
 bi.iImage = NULL;  
 if((pidl = SHBrowseForFolder(&bi)) != NULL)  
 {  
  if(SUCCEEDED(SHGetPathFromIDList(pidl, szSelected))) //得到文件夹的全路径,不要的话,只得本文件夹名  
  {  
   m_strFileOut = szSelected;  	//获得文件夹的全路径
  }  
 }  

②、打开文件——文件路径获取方式

                CString filePath;
				CFileDialog dlg(TRUE, _T("*.bmp"), "", OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, "image files (*.bmp; *.jpg) |*.bmp;*.jpg|All Files (*.*)|*.*||", NULL);
				char title[] = { "Open model-Image" };
				dlg.m_ofn.lpstrTitle = title;
				if (dlg.DoModal() == IDOK)
				{
					filePath = dlg.GetPathName();//获取当前的路径
					m_sModel_b.modelimg_path = filePath;
					//读入图像
					//手动选择1张图像创建形状模板
					ReadImage(&ho_Image, HTuple(m_sModel_b.modelimg_path));
					DispObj(ho_Image, m_lWindowHandle);
					AfxMessageBox("模板参考图像读取完成!");
				}