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

C++ 使用C+读取文件夹中的所有文件,包括子文件夹中的文件+;,c++,winapi,C++,Winapi,我想使用windows API中提供的FindFirstFile方法读取给定文件夹(文件夹路径)中的所有文件。目前我只能成功读取给定文件夹中的文件。我无法读取子文件夹中的文件。有人能帮我吗???当你调用FindFirstFile/FindNextFile时,它返回的一些“文件”实际上是目录。 通过查看返回给您的WIN32\u FIND\u DATA结构的dwFileAttributes字段,可以检查某个内容是否为目录 如果您找到一个目录,那么只需递归调用文件查找函数即可进入子文件夹 注意:请确保

我想使用windows API中提供的FindFirstFile方法读取给定文件夹(文件夹路径)中的所有文件。目前我只能成功读取给定文件夹中的文件。我无法读取子文件夹中的文件。有人能帮我吗???

当你调用
FindFirstFile
/
FindNextFile
时,它返回的一些“文件”实际上是目录。 通过查看返回给您的
WIN32\u FIND\u DATA
结构的
dwFileAttributes
字段,可以检查某个内容是否为目录

如果您找到一个目录,那么只需递归调用文件查找函数即可进入子文件夹

注意:请确保为
psuedo目录设置一个特殊的情况,否则您的函数将递归到自身中,并会导致堆栈溢出

以下是您尚未找到的文档:


(请记住,这些都是位标志,因此您必须使用&来检查)

当您调用
FindFirstFile
/
FindNextFile
时,它返回的一些“文件”实际上是目录。 通过查看返回给您的
WIN32\u FIND\u DATA
结构的
dwFileAttributes
字段,可以检查某个内容是否为目录

如果您找到一个目录,那么只需递归调用文件查找函数即可进入子文件夹

注意:请确保为
psuedo目录设置一个特殊的情况,否则您的函数将递归到自身中,并会导致堆栈溢出

以下是您尚未找到的文档:


(请记住,这些都是位标志,因此您必须使用&to检查)

使用
CFileFind
从MSDN查看这一点,使用
CFileFind

从MSDN查看这一点。或者,您可以使用它,它不仅为您提供一个干净的API,但也将使您的代码在所有受支持的平台上可移植。

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

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

CFileFind finder;

BOOL bWorking = finder.FindFile( directory );

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

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

CFileFind finder;

BOOL bWorking = finder.FindFile( directory );

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