Получение размера файлов в каталоге - PullRequest
2 голосов
/ 01 апреля 2011

Я пытаюсь получить размер файлов в каталоге, используя заголовки dirent.h.Однако

stat(ent->d_name, &statbuf)

всегда возвращает -1, и я не могу правильно определить размер.В чем может быть причина?

Ответы [ 2 ]

8 голосов
/ 01 апреля 2011

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 голос
/ 29 июня 2012

Я использую C ++, и я думал, что приведенный выше код будет работать, но это не так, потому что все еще нужно преобразование из void в char *:

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

надеюсь, это поможет кому-то:)

...