我有一个文件夹的路径,例如
/ MyFolder文件
或在Windows中:
C:\ MyFolder文件
我希望得到该文件夹中所有文件的列表。我怎么能在C中这样做?
C ++或C99有什么不同吗?
如何获取其文件夹列表?
感谢任何帮助。
答案 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章)。 任务的本质是目标文件夹及其子文件夹的递归遍历。