使用C获取文件夹中的文件列表

时间:2010-10-24 17:02:34

标签: c++ c file-io c99

我有一个文件夹的路径,例如

  

/ MyFolder文件

或在Windows中:

  

C:\ MyFolder文件

我希望得到该文件夹​​中所有文件的列表。我怎么能在C中这样做?

C ++或C99有什么不同吗?

如何获取其文件夹列表?

感谢任何帮助。

5 个答案:

答案 0 :(得分:4)

在POSIX操作系统中,您可以调用opendir()和readdir()。在Windows中,您可以调用_findfirst()和_findnext()。只需稍加努力,您就可以在Windows下将自己的opendir()和readdir()实现为包装函数,这样您的应用程序代码就可以在任何地方使用相同的API。可以找到一个例子here

答案 1 :(得分:4)

您可以使用dirent.h

中声明的功能
  

dirent.h是C POSIX中的标题   用于C编程语言的库   包含那些构造   便于目录遍历。该   功能不是C的一部分   标准,但考虑   通常是“伪标准”   平台之间的便携式   的 http://en.wikipedia.org/wiki/Dirent.h

#include <dirent.h>

int main(int argc, char **argv)
{
    DIR *dir;
    struct dirent *de;

    dir = opendir("."); /*your directory*/
    while(dir)
    {
        de = readdir(dir);
        if (!de) break;
        printf("%i %s\n", de->d_type, de->d_name);
    }
    closedir(dir);
    return 0;
}

答案 2 :(得分:3)

C ++中最好的方法是使用boost文件系统。

对于C,您需要平台API(POSIX / WinAPI)。

POSIX文档+示例:http://www.opengroup.org/onlinepubs/009695399/functions/readdir.html

答案 3 :(得分:1)

查看我用C / C ++ here写的get_all_files_within_folder(),我回答了与你类似的问题。它对我来说很完美。希望它有所帮助。

答案 4 :(得分:0)

这是经典任务,可能在Kernigan&amp; amp; amp; amp; amp; amp; amp; amp; Ritchie - C编程语言(第8.6章)。 任务的本质是目标文件夹及其子文件夹的递归遍历。