我发现了很多关于遍历目录树的示例,但我需要一些不同的东西。我需要一个带有某种方法的类,每次调用都会从目录返回一个文件,并逐渐遍历目录树。请问我该怎么做?我正在使用函数 FindFirstFile、FindNextFile 和 FindClose,我是 C++ 新手。我有这样的东西...
例如我有这个简单的目录树
Parent(folder)\
file1.txt
file2.txt
Child(folder)\
file3.txt
file4.txt
我需要一个带有方法的类,例如 getNextFile(),第一次调用返回 file1.txt;第二次调用返回 file2.txt,第三次调用返回 Child(folder),第四次调用返回 file3.txt 等等...
编辑重复标志:我基本上需要在没有 do/while、while 或 for...的情况下遍历树...我需要某种迭代器,可以存储它以供以后使用,并且当我中断浏览时可以从上一个文件继续,但是理想情况下仅使用 winapi 调用
WIN32_FIND_DATA fdFile;
HANDLE hFind = NULL;
if((hFind = FindFirstFile(sPath, &fdFile)) == INVALID_HANDLE_VALUE)
{
return false;
}
do
{
//do some job with fdFile
}
while(FindNextFile(hFind, &fdFile));
以下是在 Windows 平台上执行此操作的本机 C++ 方法(使用 MFC 框架):
void ListFiles(const CString& sPath)
{
CFileFind finder;
CString sWildcard(sPath);
sWildcard += _T("\\*.*");
BOOL bWorking = finder.FindFile(sWildcard);
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.IsDots())
continue;
if (finder.IsDirectory())
{
CString sFilePath = finder.GetFilePath();
// TODO: do stuff here
ListFiles(sFilePath);
}
}
finder.Close();
}
您可以更改通配符字符串以定位特定文件,例如*.txt等等。您还可以将其作为参数传递给该函数,以使其更通用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)