readdir 是一個在 CentOS(以及其他 Unix-like 系統)上用于讀取目錄內容的函數。它通常與 opendir、closedir 和 dirent.h 庫一起使用,以實現對目錄的遍歷。以下是 readdir 的基本用法示例:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int main() {
DIR *dir;
struct dirent *entry;
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
return 0;
}
與此相比,還有其他方法可以遍歷目錄,例如使用 find 命令行工具或使用其他編程語言的庫函數。以下是一些對比:
find 命令行工具優點:
缺點:
示例:
find /path/to/directory -type f
os 模塊優點:
缺點:
示例:
import os
for root, dirs, files in os.walk('/path/to/directory'):
for file in files:
print(os.path.join(root, file))
<filesystem> 庫(C++17 及以上)優點:
缺點:
示例:
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main() {
for (const auto &entry : fs::directory_iterator("/path/to/directory")) {
std::cout << entry.path() << std::endl;
}
return 0;
}
readdir:適用于需要在 C/C++ 程序中實現目錄遍歷的場景,提供了較低級別的控制。find 命令行工具:適用于快速查找文件,不適合復雜的編程邏輯。os 模塊:適用于需要在 Python 腳本中實現目錄遍歷的場景,提供了豐富的功能。<filesystem> 庫:適用于需要在 C++ 程序中實現目錄遍歷的場景,提供了現代 C++ 的語法和功能。選擇哪種方法取決于具體的需求、編程語言和環境。