vc中如何遍历指定的目录以及目录中的子目录 vc中如何遍历指定的目录以及目录中的子目录 并且获得子目录中的每个文件的完整路径 以便在程序中对这些文件进行解析 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 照搬的例子void Recurse(LPCTSTR pstr){ CFileFind finder; // build a string with wildcards CString strWildcard(pstr); strWildcard += _T("\\*.*"); // start working for files BOOL bWorking = finder.FindFile(strWildcard); while (bWorking) { bWorking = finder.FindNextFile(); // skip . and .. files; otherwise, we'd // recur infinitely! if (finder.IsDots()) continue; // if it's a directory, recursively search it if (finder.IsDirectory()) { CString str = finder.GetFilePath(); TRACE(_T("%s\n"), (LPCTSTR)str); Recurse(str); } } finder.Close();}void PrintDirs(){ Recurse(_T("C:"));} find(char * lpPath){ char szFind[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"*.*"); HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRUE) { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(FindFileData.cFileName[0]!='.') { strcpy(szFile,lpPath); strcat(szFile,""); strcat(szFile,FindFileData.cFileName); find(szFile); } } else { cout << FindFileData.cFileName; } if(!FindNextFile(hFind,&FindFileData)) break; } FindClose(hFind);} #include <windows.h>#include <iostream>#include <string>using namespace std;bool IsRoot(string Path){ string Root; Root=Path.at(0)+":\\"; if(Root==Path) return true; else return false;}void FindInAll(string Path){ string szFind; szFind=Path; if(!IsRoot(szFind)) szFind+="\\"; szFind+="*.*"; WIN32_FIND_DATA FindFileData; HANDLE hFind=FindFirstFile(szFind.c_str(),& FindFileData); if(hFind==INVALID_HANDLE_VALUE) return ; do { if(FindFileData.cFileName[0]=='.') //过滤本级目录和父目录 continue; if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目录,则进入此目录进行递归 { string szFile; if(IsRoot(Path)) szFile=Path+FindFileData.cFileName; else szFile=Path+"\\"+FindFileData.cFileName; FindInAll(szFile); } else //找到的是文件 { string szFile; if(IsRoot(Path)) szFile=Path+FindFileData.cFileName; else szFile=Path+"\\"+FindFileData.cFileName; cout<<szFile<<endl; cout<<FindFileData.cFileName<<endl; } } while(FindNextFile(hFind,& FindFileData)); FindClose(hFind);} int main(){ FindInAll("C:\\Documents and Settings\\user\\桌面\\ses"); return 0;} windows界面 与 DLL 模块间的异步通信方式 关于端口号的问题 请问下面一段话是什么意思?特别是红色的部分,谢谢! pDC->CreateCompatibleDC(0) 出错 ECCV图像语义库如何使用? vector 中放入大小可变结构是不是有问题??? MessageBox函数用法问题! CEditView类支持静态拆分吗?在线,即时结贴!!! 请问基于文档、视与基于对话框的程序相比有什么优势? 不知道是低级还是高级的错误.... 关于 OnPaint() 什么时候调用?
void Recurse(LPCTSTR pstr)
{
CFileFind finder; // build a string with wildcards
CString strWildcard(pstr);
strWildcard += _T("\\*.*"); // start working for files
BOOL bWorking = finder.FindFile(strWildcard); while (bWorking)
{
bWorking = finder.FindNextFile(); // skip . and .. files; otherwise, we'd
// recur infinitely! if (finder.IsDots())
continue; // if it's a directory, recursively search it if (finder.IsDirectory())
{
CString str = finder.GetFilePath();
TRACE(_T("%s\n"), (LPCTSTR)str);
Recurse(str);
}
} finder.Close();
}void PrintDirs()
{
Recurse(_T("C:"));
}
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
strcpy(szFile,lpPath);
strcat(szFile,"");
strcat(szFile,FindFileData.cFileName);
find(szFile);
}
}
else
{
cout << FindFileData.cFileName;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
#include <iostream>
#include <string>
using namespace std;bool IsRoot(string Path)
{
string Root;
Root=Path.at(0)+":\\";
if(Root==Path)
return true;
else
return false;
}void FindInAll(string Path)
{
string szFind;
szFind=Path;
if(!IsRoot(szFind))
szFind+="\\";
szFind+="*.*";
WIN32_FIND_DATA FindFileData;
HANDLE hFind=FindFirstFile(szFind.c_str(),& FindFileData);
if(hFind==INVALID_HANDLE_VALUE)
return ;
do
{
if(FindFileData.cFileName[0]=='.') //过滤本级目录和父目录
continue;
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) //如果找到的是目录,则进入此目录进行递归
{
string szFile;
if(IsRoot(Path))
szFile=Path+FindFileData.cFileName;
else
szFile=Path+"\\"+FindFileData.cFileName;
FindInAll(szFile);
}
else //找到的是文件
{
string szFile;
if(IsRoot(Path))
szFile=Path+FindFileData.cFileName;
else
szFile=Path+"\\"+FindFileData.cFileName;
cout<<szFile<<endl;
cout<<FindFileData.cFileName<<endl;
}
}
while(FindNextFile(hFind,& FindFileData));
FindClose(hFind);
}
int main()
{
FindInAll("C:\\Documents and Settings\\user\\桌面\\ses");
return 0;
}