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

时间:2010-05-27 04:57:01

标签: c++ winapi

我想使用Windows API中提供的FindFirstFile方法读取给定文件夹(文件夹的路径)中的所有文件。目前我只是成功读取给定文件夹中的文件。我无法读取子文件夹中的文件。任何人都可以帮我这么做吗?

4 个答案:

答案 0 :(得分:3)

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

如果您找到一个目录,那么您可以简单地调用文件查找功能进入子文件夹。

注意:确保为... psuedo目录添加特殊情况,否则您的函数会递归到自身并且您将获得堆栈溢出

如果你还没有找到它,那么这是文档:

FindFirstFile

WIN32_FIND_DATA

possible values for dwFileAttributes(记住这些都是位标志,所以你必须使用&来检查)

答案 1 :(得分:2)

或者,您可以使用boost::filesystem,它不仅可以为您提供干净的API,还可以使您的代码在所有支持的平台上都可移植。

答案 2 :(得分:0)

使用CFileFind从MSDN查看此example

答案 3 :(得分:0)

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

CFileFind finder;

BOOL bWorking = finder.FindFile( directory );

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