mfc目录遍历
1. MFC 中文件夹的遍历
一个类搞定 CFileFind
搜索这个名字就可以得到大量的源码了。
2. mfc中怎么遍历指定目录下的文件名字
static void TraverseDir(const string& dir, std::vector<string>& vec)
{
ff;
string temp_dir = dir+ "*.bin";
BOOL ret = ff.FindFile(temp_dir.c_str());
while (ret)
{
ret = ff.FindNextFile();
if (ret != 0)
{
if (ff.IsDirectory() && !ff.IsDots())
{
CString path = ff.GetFilePath();
//TraverseDir(path.GetBuffer(0), vec);
}
else if (!ff.IsDirectory() && !ff.IsDots())
{
//CString name = ff.GetFileName();
CString path = ff.GetFilePath();
vec.push_back(path.GetBuffer(0));
}
else
{
CString path = ff.GetFilePath();
int j = 0 ;
}
}
else
{
CString path = ff.GetFilePath();
if (path.Find(".bin")>0)
{
vec.push_back(path.GetBuffer(0));
}
}
}
ff.Close();
}
3. C++(MFC)得到文件夹路径,之后怎么遍历文件夹里面的文件(char*)保存
这个是删除文件的用法,找到文件和删除文件都差不多。用CFileFinder可以遍历。
voidDelFiles(CString&strDirPath,CStringstrFileName,BOOLbDelAll)
{
CFileFindFileFinder;
strDirPath=strDirPath+_T("\");
CStringstrFilePath=strDirPath+strFileName;
while(TRUE)
{
if(FileFinder.FindFile(strFilePath))
{
FileFinder.FindNextFile();
CStringstrDelFilePath=FileFinder.GetFileName();
strDelFilePath=strDirPath+strDelFilePath;
DelDirectory(strDelFilePath);
if(!bDelAll)
{
break;
}
}
else
{
break;
}
}
FileFinder.Close();
}
4. MFC,遍历文件夹。文件夹下有多个子文件夹,子文件夹中又有多个子文件。
网上这种文章和例子太多了,不复制了,自己版搜“cfilefind 递归 子目权录”
http://wenku..com/view/282ecb1bff00bed5b9f31df3.html
5. MFC中遍历当前目录下的文件和文件夹,然后将所有找到的文件夹的名字提取出来
把以下代码放到Win32控制台运行,亲测可用:
#include <windows.h>
#define FILEILTER "*.*" //查找条件,例如查找.exe格式的那么就用*.exe,当然也可以直接用setup.exe
#include "iostream.h"
#include "stdio.h"
BOOL IsRoot(LPCTSTR lpszPath)
{
TCHAR szRoot[4];
wsprintf(szRoot, "%c:\\", lpszPath[0]);
return (lstrcmp(szRoot, lpszPath) == 0);
}
void FindInAll(LPCTSTR lpszPath)
{
TCHAR szFind[MAX_PATH];
lstrcpy(szFind, lpszPath);
if (!IsRoot(szFind))
lstrcat(szFind, "\\");
lstrcat(szFind, FILEILTER); // 找所有文件
WIN32_FIND_DATA wfd;
HANDLE hFind = FindFirstFile(szFind, &wfd);
if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败
return;
do
{
if (wfd.cFileName[0] == '.')
continue; // 过滤这两个目录
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归
}
}
else
{
TCHAR szFile[MAX_PATH];
if (IsRoot(lpszPath))
{
wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName);
}
else
{
wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName);
printf("%s\n",szFile);
}
// 对文件进行操作
}
} while (FindNextFile(hFind, &wfd));
FindClose(hFind); // 关闭查找句柄
}
int main(int argc, char* argv[])
{
FindInAll("E:"); //这里设置目录为E:,请根据需要更改
return 0;
}
6. MFC 如何遍历当前文件夹下的文件夹
请参考 vc范例开发大全 陈建国 实例207
7. 怎么用MFC的类实现遍历某个指定目录下的所有目录,包括他子目录的子目录
使用CFileFind递归遍历,这是我写的一个搜索文件的内例子。容
http://blog.csdn.net/charlessimonyi/article/details/8648837
8. MFC我想遍历某个文件夹的所有文件并获取文件大小,再把它们加起来
RefreshDataTemp(strPath);} //递归调用
这里你也写了,是递归调用,那么也就是子目录的统计,是在另版一个(同名)函数调权用中完成的,而size和Size都是局部变量,不会传递到上一层函数调用。
解决方法:Size 作为返值或全局变量,tr的三行语句放在这个函数之外,不参与递归。
9. MFC如何遍历一个文件夹下的所有文件夹(不是文件,是文件夹)
用下复面的程序段可以实现制你要求的功能
CFileFind ff;
CString strDir= "d:\\Program Files\\*.*";
BOOL res = ff.FindFile(strDir);
while(res)
{
res = ff.FindNextFile
if(ff.IsDirectory() && (!ff.IsDots()))();//遍历子目录,剔除".0”和".."两个
{
CString strFile = ff.GetFileName();
…
// 在这里写需要的代码
}
}
ff.Close(); // 不要忘记关闭
若满意请及时采纳,谢谢
10. MFC 用树控件实现磁盘目录遍历