readdir
和 glob
是在編程中用于處理文件和目錄的兩種不同的方法,它們在不同的編程語言和庫中有不同的實現。在 Debian(一個流行的 Linux 發行版)上,這些函數通常在 C 語言的標準庫或者 POSIX 庫中找到。下面是這兩個函數的基本區別和應用場景:
readdir
是一個 POSIX 標準庫函數,用于讀取目錄的內容。它通常與 opendir
和 closedir
函數一起使用,以打開一個目錄流,然后逐個讀取目錄中的條目。
應用場景:
示例:
#include <dirent.h>
#include <stdio.h>
int main() {
DIR *dir = opendir(".");
struct dirent *entry;
if (dir == NULL) {
perror("opendir");
return EXIT_FAILURE;
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return EXIT_SUCCESS;
}
glob
是一個用于文件名模式匹配的函數,它可以根據指定的模式(如通配符)來查找匹配的文件和目錄。
應用場景:
.txt
文件。示例:
#include <glob.h>
#include <stdio.h>
int main() {
glob_t globbuf;
int ret;
ret = glob("*.txt", GLOB_TILDE, NULL, &globbuf);
if (ret != 0) {
fprintf(stderr, "glob error\n");
return EXIT_FAILURE;
}
for (size_t i = 0; i < globbuf.gl_pathc; ++i) {
printf("%s\n", globbuf.gl_pathv[i]);
}
globfree(&globbuf);
return EXIT_SUCCESS;
}
總結來說,readdir
更適合于需要逐個處理目錄條目的場景,而 glob
更適合于需要根據模式匹配來查找文件的場景。在實際應用中,你可以根據具體的需求選擇合適的函數。