我试图通过使用 dirent.h 标头来获取目录中文件的大小。然而
stat(ent->d_name, &statbuf)
总是返回-1,我无法正确获得大小。可能是什么原因?
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);
我使用 C++,我认为上面的代码可以工作,但它没有,因为它仍然需要从 void 到 char* 的转换:
char *fullName = (char*) malloc(strlen(path) + strlen(entry->d_name) + 2);
希望这可以帮助某人:)