C语言中如何获取目录的大小

作者:编程家 分类: c++ 时间:2025-08-21

获取目录的大小的方法

在C语言中,要获取目录的大小,需要遍历目录下的所有文件,将每个文件的大小累加起来。具体步骤如下:

1. 打开目录:使用C标准库中的opendir()函数打开目标目录。该函数需要传入目录的路径作为参数,并返回一个指向DIR类型的指针。

2. 遍历目录:使用readdir()函数遍历目录中的文件。该函数需要传入opendir()函数返回的指针,并返回一个指向struct dirent类型的指针。

3. 计算大小:对于每个文件,可以使用stat()函数获取其大小。该函数需要传入文件的路径作为参数,并返回一个struct stat类型的结构体。结构体中的st_size字段表示文件的大小。

4. 累加大小:遍历所有文件,将每个文件的大小累加起来即可得到目录的总大小。

5. 关闭目录:使用closedir()函数关闭目录,释放资源。

下面是一个示例代码,演示了如何获取目录的大小:

c

#include

#include

#include

#include

long long get_directory_size(const char *path) {

DIR *dir;

struct dirent *entry;

struct stat info;

long long size = 0;

dir = opendir(path);

if (dir == NULL) {

perror("opendir");

return -1;

}

while ((entry = readdir(dir)) != NULL) {

char file_path[256];

strcpy(file_path, path);

strcat(file_path, "/");

strcat(file_path, entry->d_name);

if (stat(file_path, &info) == 0) {

if (S_ISREG(info.st_mode)) {

size += info.st_size;

}

}

}

closedir(dir);

return size;

}

int main() {

const char *directory = "/path/to/directory";

long long size = get_directory_size(directory);

if (size != -1) {

printf("Directory size: %lld bytes\n", size);

}

return 0;

}

代码解析

1. 首先,我们定义了一个函数get_directory_size(),该函数接受一个目录路径作为参数,并返回一个long long类型的值,表示目录的大小。

2. 在函数中,我们首先使用opendir()函数打开目录,并将返回的指针赋值给dir变量。如果打开失败,我们使用perror()函数输出错误信息,并返回-1。

3. 然后,我们使用readdir()函数遍历目录中的文件。每次遍历得到的文件信息保存在entry变量中。

4. 我们将当前文件的路径拼接到file_path数组中,然后使用stat()函数获取文件的信息。如果获取成功,并且该文件是一个普通文件(S_ISREG()宏返回非零值),我们将文件的大小累加到size变量中。

5. 最后,我们使用closedir()函数关闭目录,并返回累加结果。

6. 在main()函数中,我们调用get_directory_size()函数获取目录的大小,并将结果输出到控制台。

通过以上步骤,我们可以在C语言中获取目录的大小。这对于统计磁盘空间使用情况、文件备份等场景非常有用。