繁体   English   中英

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

[英]Read all files inside a folder including files in subfolders using C++

我想使用Windows API中提供的FindFirstFile方法读取给定文件夹(文件夹的路径)内的所有文件。 目前,我仅成功读取给定文件夹中的文件。 我无法读取子文件夹中的文件。 谁能帮我做到这一点?

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

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

注意:请确保为放入特殊情况. .. psuedo-directories,否则您的函数将递归到其本身,并且您将获得堆栈溢出

如果您还没有找到,请参考以下文档:

用FindFirstFile

WIN32_FIND_DATA

dwFileAttributes的可能值 (请记住,这些都是位标志,因此您必须使用&进行检查)

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

使用CFileFind从MSDN看这个示例

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

CFileFind finder;

BOOL bWorking = finder.FindFile( directory );

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM