【问题标题】:Read all files inside a folder including files in subfolders using C++使用 C++ 读取文件夹内的所有文件,包括子文件夹中的文件
【发布时间】:2011-02-24 12:06:01
【问题描述】:

我想使用 Windows API 中提供的 FindFirstFile 方法读取给定文件夹(文件夹路径)中的所有文件。目前我只成功地读取了给定文件夹中的文件。我无法读取子文件夹中的文件。谁能帮我做这个??

【问题讨论】:

    标签: c++ winapi


    【解决方案1】:

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

    如果您找到一个目录,那么您可以简单地递归调用您的文件查找函数以进入子文件夹。

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

    如果您还没有找到它,这里是文档:

    FindFirstFile

    WIN32_FIND_DATA

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

    【讨论】:

      【解决方案2】:

      看看这个来自 MSDN 的 example 使用 CFileFind

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          CFileFind finder;
          
          BOOL bWorking = finder.FindFile( directory );
          
          while( bWorking )
          {
              bWorking = finder.FindNextFile();                   
          }//end while
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-01-25
            • 1970-01-01
            • 2018-04-02
            • 2017-07-05
            • 1970-01-01
            相关资源
            最近更新 更多