Показаны сообщения с ярлыком Snippets. Показать все сообщения
Показаны сообщения с ярлыком Snippets. Показать все сообщения

четверг, 30 июня 2011 г.

Как узнать размер файла в C/C++ ?


Существует куча способов узнать размер файла при помощи С/С++. Есть способы, которые зависят от операционной системы, есть те, которые зависят от файловой системы.



Например, этот вариант отлично работает в unix-like системах
// return file size in bytes
int getFileSize(FILE *input)
{
    int fileSizeBytes;
    // set file pointer to end of file
    fseek(input, 0, SEEK_END);
    // get current pointer position in bytes (== file size in bytes)
    fileSizeBytes = ftell(input);
    // return pointer to begin of file (it's very IMPORTANT)
    fseek(input, 0, SEEK_SET);
    return fileSizeBytes;
}
Но то, что прекрасно работает на unix-like системах, никогда не всегда работает в windows. Поэтому предлагаю posix вариант данной функции, который хорошо работает как в windows так и в linux:
#include <sys/stat.h>
...
int getFileSize(const char * fileName)
{
    struct stat file_stat;
    stat(fileName, &file_stat);
    return file_stat.st_size;
}