在 CentOS 系统中,readdir 是一个用于读取目录内容的函数
opendir() 和 readdir() 函数:首先,你需要包含相应的头文件:
#include <dirent.h>
#include <stdio.h>
#include <stdlib.h>
然后,你可以使用 opendir() 函数打开目录,并使用 readdir() 函数读取目录中的文件:
DIR *dir;
struct dirent *entry;
dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
readdir() 函数返回的 struct dirent 结构体中的 d_name 字段是一个指向文件名的指针。这个指针指向的内存是由内核分配的,因此在下一次调用 readdir() 之前,你需要确保已经处理完当前文件名。
对于大文件,你可能需要根据实际需求对文件进行处理。例如,你可以检查文件大小、修改时间等信息,或者根据文件名进行筛选。以下是一个简单的示例,用于打印目录中所有以 .txt 结尾的文件:
DIR *dir;
struct dirent *entry;
dir = opendir("/path/to/directory");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
if (strstr(entry->d_name, ".txt") != NULL) {
printf("%s\n", entry->d_name);
}
}
closedir(dir);
readdir() 可能会变得较慢。在这种情况下,你可以考虑使用多线程或其他并行技术来提高性能。