计算C中嵌套目录中文件的块大小
Posted
技术标签:
【中文标题】计算C中嵌套目录中文件的块大小【英文标题】:Calculate blocksize of files in nested directories in C 【发布时间】:2021-10-14 07:16:43 【问题描述】:我一直在尝试以递归方式计算嵌套文件夹中文件的总块大小。我的代码设法获取第一个文件夹中文件的块大小,但无法读取嵌套在当前文件夹中的文件夹中的文件大小。嵌套文件夹中的文件返回的块大小为零。为什么会这样?
int scanDir (char *fstring)
char new_dirname[180] = 0 ;
int total_size = 0;
DIR *dir = opendir(fstring);
if(dir == NULL)
perror("Could not open file\n");
exit(EXIT_FAILURE);
struct dirent *filenum;
filenum = readdir(dir);
while(filenum != NULL)
if (strcmp(filenum->d_name, ".") != 0 && strcmp(filenum->d_name, "..") != 0)
//Check if file is not a directory
if (filenum->d_type != DT_DIR )
//Get the size of the file and add it to total size
struct stat buf;
int res = lstat(filenum->d_name, &buf);
if (res == 0)
total_size += buf.st_blocks;
printf("%s: %ld\n", filenum->d_name, buf.st_blocks);
else
//If file is a directory
//Add new path name and the /
printf("%s\n", filenum->d_name);
strcat(new_dirname, fstring);
strcat(new_dirname, "/");
strcat(new_dirname, filenum->d_name);
//Add the return value to total size
total_size += scanDir(new_dirname);
//Clear the array for the next iteration.
memset(new_dirname, 0, 180);
filenum = readdir(dir);
closedir(dir);
return (total_size);
【问题讨论】:
【参考方案1】:我解决了!我将一个与文件名相对应的字符串传递给 lstat,而不是文件 的相对路径。
【讨论】:
以上是关于计算C中嵌套目录中文件的块大小的主要内容,如果未能解决你的问题,请参考以下文章