C++的6种获取文件大小的方法

本文介绍了六种不同的方法来获取文件的大小,包括使用C标准库函数、POSIX函数、Windows API、C++标准库等,适用于不同编程环境和操作系统。
long getFileSize1(const char* strFileName)
{
    FILE * fp = fopen(strFileName, "r");
    fseek(fp, 0L, SEEK_END);
    long size = ftell(fp);
    fclose(fp);
    return size;
}

long getFileSize2(const char* strFileName)
{
    struct _stat info;
    _stat(strFileName, &info);
    long size = info.st_size;
    return size;
}

long getFileSize3(const char* strFileName)
{
    FILE* file = fopen(strFileName, "rb");
    if (file)
    {
        long size = filelength(fileno(file));
        fclose(file);
        return size;
    }
    return 0;
}

ULONGLONG getFileSize4(const char* strFileName)
{
    CFile cfile;
    if (cfile.Open(strFileName, CFile::modeRead))
    {
        ULONGLONG size = cfile.GetLength();
        return size;
    }
    return 0;
}

long getFileSize5(const char* strFileName)
{
    HANDLE handle = ::CreateFile(strFileName, FILE_READ_EA, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
    if (handle != INVALID_HANDLE_VALUE)
    {
        long size = ::GetFileSize(handle, NULL);
        ::CloseHandle(handle);
        return size;
    }
    return 0;
}

long getFileSize6(const char* strFileName)
{
    std::ifstream in(strFileName);
    if (!in.is_open()) return 0;

    in.seekg(0, std::ios_base::end);
    std::streampos sp = in.tellg();
    return sp;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值