获取目录中文件的大小

时间:2011-04-01 14:36:21

标签: c dirent.h

我尝试使用dirent.h标头获取目录中的文件大小。然而

stat(ent->d_name, &statbuf)

总是返回-1,我无法正确获得大小。可能是什么原因?

2 个答案:

答案 0 :(得分:8)

d_name包含该目录中文件的名称。 stat需要包含目录部分的名称,除非它是当前目录。

创建一个包含d_name文件的完整路径的临时字符串。

编辑:示例

char const * DirName = "/tmp";
....
char * FullName = (char*) malloc(strlen(DirName) + strlen(ent->d_name) + 2); 
strcpy(FullName, DirName);
strcat(FullName, "/");
strcat(FullName, ent->d_name);
stat(FullName, &statbuf);
free(FullName);

答案 1 :(得分:1)

我使用C ++,我认为上面的代码可行,但它没有,因为它仍然需要从void转换为char *:

char *fullName = (char*) malloc(strlen(path) + strlen(entry->d_name) + 2);

希望这可以帮助某人:)