我尝试使用dirent.h标头获取目录中的文件大小。然而
stat(ent->d_name, &statbuf)
总是返回-1,我无法正确获得大小。可能是什么原因?
答案 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);
希望这可以帮助某人:)