我想使用Windows API中提供的FindFirstFile方法读取给定文件夹(文件夹的路径)中的所有文件。目前我只是成功读取给定文件夹中的文件。我无法读取子文件夹中的文件。任何人都可以帮我这么做吗?
答案 0 :(得分:3)
当您致电FindFirstFile
/ FindNextFile
时,它返回的某些“文件”实际上是目录。
您可以通过查看返回给您的dwFileAttributes
结构的WIN32_FIND_DATA
字段来检查某些内容是否是某个目录。
如果您找到一个目录,那么您可以简单地调用文件查找功能进入子文件夹。
注意:确保为.
和..
psuedo目录添加特殊情况,否则您的函数会递归到自身并且您将获得堆栈溢出
如果你还没有找到它,那么这是文档:
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