【发布时间】:2016-10-03 22:29:06
【问题描述】:
有没有办法列出给定路径中的所有文件夹、子文件夹和文件?例如:(c:\myfolder),并打印其中包含的每个文件和文件夹的完整路径?
c:\myfolder\folder1\
c:\myfolder\folder2\
c:\myfolder\folder2\f1
c:\myfolder\folder2\f2\g1
c:\myfolder\test.txt
c:\myfolder\t.txt
我找到了这个例子,但只为 linux 设计:
int is_directory_we_want_to_list(const char *parent, char *name) {
struct stat st_buf;
if (!strcmp(".", name) || !strcmp("..", name))
return 0;
char *path = alloca(strlen(name) + strlen(parent) + 2);
sprintf(path, "%s/%s", parent, name);
stat(path, &st_buf);
return S_ISDIR(st_buf.st_mode);
}
int list(const char *name) {
DIR *dir = opendir(name);
struct dirent *ent;
while (ent = readdir(dir)) {
char *entry_name = ent->d_name;
printf("%s\n", entry_name);
if (is_directory_we_want_to_list(name, entry_name)) {
// You can consider using alloca instead.
char *next = malloc(strlen(name) + strlen(entry_name) + 2);
sprintf(next, "%s/%s", name, entry_name);
list(next);
free(next);
}
}
closedir(dir);
}
【问题讨论】:
-
FindFirstFile是你想要的:msdn.microsoft.com/fr-fr/library/windows/desktop/… -
你的编译器是什么?
-
@BLUEPIXY 我正在使用
Visual Studio 2010 -
尝试使用
_popen和tree /F命令或dir /S /B /OG命令。 -
@BLUEPIXY 我需要一个代码,因为我需要在每个文件中进行操作。