使用C++读取文件夹内的所有文件(包括子文件夹中的文件)

问题描述:

我想使用Windows API中提供的FindFirstFile方法读取给定文件夹内的所有文件(文件夹路径)。目前,我只能成功读取给定文件夹内的文件。我无法读取子文件夹内的文件。任何人都可以帮助我做到这一点?使用C++读取文件夹内的所有文件(包括子文件夹中的文件)

当您拨打FindFirstFile/FindNextFile时,它返回的一些“文件”实际上是目录。 您可以通过查看返回给您的WIN32_FIND_DATA结构的dwFileAttributes字段来检查某个目录是否为目录。

如果您发现某个目录是一个目录,那么您可以简单地调用您的文件查找函数以便进入子文件夹。

注意:请务必把在为...伪目录中一个特殊的情况,否则你的函数将递归到本身,你会得到一个堆栈溢出

这里的文件,如果你还没有已经发现:

FindFirstFile

WIN32_FIND_DATA

possible values for dwFileAttributes(记住,这些都是位标志,因此您必须使用&进行检查)

+0

Thanks dude .. It works。It works。 :d – ganuke 2010-05-27 12:26:01

请使用CFileFind从MSDN查看此example

或者,您可以使用boost::filesystem这不仅会给你一个干净的API,而且还会使你的代码在所有支持的平台上都可移植。

我已经使用此代码读取指定目录中的文件。

CFileFind finder; 

BOOL bWorking = finder.FindFile(directory); 

while(bWorking) 
{ 
    bWorking = finder.FindNextFile();     
}//end while