C++ 遍历指定文件夹~相应操作

来源:互联网 发布:单片机gnd是什么意思 编辑:程序博客网 时间:2024/06/10 22:17

在平时开发中,时常需要遍历指定文件夹目录下的所有文件,在这里总结一下代码。

下面这段代码就是递归遍历指定目录,把遍历出来文件信息保存到vector向量里面:

bool FileTra(CString &strDir,vector<CString> &file){if (strDir.IsEmpty())//如果目录是空的,就退出当前遍历{return false;}CFileFind filefind;bool bFound = filefind.FindFile(strDir + _T("\\*"), 0);while (bFound){bFound = filefind.FindNextFile();if (filefind.GetFileName() =="."|| filefind.GetFileName() =="..")//跳过隐藏文件continue;SetFileAttributes(filefind.GetFilePath(), FILE_ATTRIBUTE_NORMAL);if (filefind.IsDirectory()){FileTra(filefind.GetFilePath(),file);}else{/*获取文件的各种信息*///CString m_strFileAbsolutePath;//tempFile.m_strFileAbsolutePath=filefind.GetFilePath();//获取文件绝对路径CString m_strFileName;tempFile.m_strFileName=filefind.GetFileName();//获取文件名file.push_back(m_strFileName);}}}
除了获取信息,也可以做别的操作,如递归遍历删除指定文件夹,这个也是比较常用的,代码如下:

//遍历删除指定目录下所有文件夹以及文件void DeleteDirectory(CString strDir){if(strDir.IsEmpty())   { RemoveDirectory(strDir); return; } //首先删除文件及子文件夹 CFileFind   ff; BOOL bFound = ff.FindFile(strDir+ _T("\\*"),0); while(bFound) { bFound = ff.FindNextFile(); if(ff.GetFileName()== _T(".")||ff.GetFileName()== _T("..")) continue; //去掉文件(夹)只读等属性 SetFileAttributes(ff.GetFilePath(),FILE_ATTRIBUTE_NORMAL); if(ff.IsDirectory())  {   //递归删除子文件夹 DeleteDirectory(ff.GetFilePath()); RemoveDirectory(ff.GetFilePath()); } else   { DeleteFile(ff.GetFilePath());   //删除文件 } } ff.Close(); //如果有需要连这个文件夹都删除,可以把这一句注释去掉 //RemoveDirectory(strDir); }
总体流程还是没什么变化的,主要就是遍历指定目录,然后做相应操作即可。




0 0
原创粉丝点击