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 用樹控制項實現磁碟目錄遍歷