在Linux中,opendir()
函数用于打开一个目录
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>
long long get_directory_size(const char *dir) {
DIR *d = opendir(dir);
if (d == NULL) {
perror("Error opening directory");
return -1;
}
long long size = 0;
struct dirent *entry;
while ((entry = readdir(d)) != NULL) {
struct stat st;
lstat(entry->d_name, &st);
if (S_ISDIR(st.st_mode)) {
size += get_directory_size(entry->d_name);
} else {
size += st.st_size;
}
}
closedir(d);
return size;
}
int main() {
const char *dir = "."; // Replace with the desired directory path
long long dir_size = get_directory_size(dir);
if (dir_size >= 0) {
printf("Directory size: %lld bytes\n", dir_size);
}
return 0;
}
这个程序首先使用opendir()
打开一个目录,然后遍历目录中的所有文件和子目录。对于每个文件,它使用lstat()
获取文件的状态信息,然后根据文件类型(目录或普通文件)更新总大小。最后,程序关闭目录并使用返回的总大小。