如何在子目录中搜索文件?

时间:2012-04-18 12:24:19

标签: c++ windows winapi

我必须创建一个程序来搜索特定目录(下例中的folderA)的子目录中的文件“letter.txt”。

例如:

folderA/
   folderA1/...
   folderA2/...
   folderA3/...
   folderA4/letter.txt
   folderA5/...

我必须使用什么API:

- list subdirectories of a specific directory ( folderA ), 
- open each of these subdirectories ( folderA1, folderA2, folderA3, etc ) 
- search and open the file letter.txt ?

2 个答案:

答案 0 :(得分:3)

在原始Win32中,这将使用FindFirstFile完成,但您必须手动编写递归代码;很难让所有的角落情况都正确(例如,如果你有创建循环目录结构的重新分析点会发生什么?)。

为了更方便,您可以使用Boost.Filesystem; class recursive_directory_iterator完全符合你的要求。在过去,我也使用了recls library,我非常满意 - 它只是有效。

答案 1 :(得分:1)

我知道如何执行该任务的最佳方式是使用Boost.filesystem库。

http://www.boost.org/doc/libs/1_49_0/libs/filesystem/v3/doc/index.htm

它提供了一个目录迭代器(和一个递归目录迭代器),它允许您遍历目录中的文件和目录,寻找您需要的文件。