使用C++读取文件夹内的所有文件(包括子文件夹中的文件)
问题描述:
我想使用Windows API中提供的FindFirstFile方法读取给定文件夹内的所有文件(文件夹路径)。目前,我只能成功读取给定文件夹内的文件。我无法读取子文件夹内的文件。任何人都可以帮助我做到这一点?使用C++读取文件夹内的所有文件(包括子文件夹中的文件)
答
当您拨打FindFirstFile
/FindNextFile
时,它返回的一些“文件”实际上是目录。 您可以通过查看返回给您的WIN32_FIND_DATA
结构的dwFileAttributes
字段来检查某个目录是否为目录。
如果您发现某个目录是一个目录,那么您可以简单地调用您的文件查找函数以便进入子文件夹。
注意:请务必把在为.
和..
伪目录中一个特殊的情况,否则你的函数将递归到本身,你会得到一个堆栈溢出
这里的文件,如果你还没有已经发现:
possible values for dwFileAttributes(记住,这些都是位标志,因此您必须使用&进行检查)
答
我已经使用此代码读取指定目录中的文件。
CFileFind finder;
BOOL bWorking = finder.FindFile(directory);
while(bWorking)
{
bWorking = finder.FindNextFile();
}//end while
Thanks dude .. It works。It works。 :d – ganuke 2010-05-27 12:26:01