C:获取文件大小的两种方式

1.通过ftell

ftell可以返回文件当前位置的偏移量,所以可以先通过fseek将文件当前位置挪到尾部,然后再通过ftell获取文件的大小

2.通过fstat,该函数可以获取文件的相关信息,其中有关于文件大小的值

cpp 复制代码
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h>

int getFileSizeFromTell(char* filePath)
{
    int fileSize = 0;
    FILE* fp = fopen(filePath, "r");
    if(fp)
    {
        fseek(fp, 0, SEEK_END);
        fileSize = ftell(fp);
        fclose(fp);
    }
    return fileSize;
}

int getFileSizeFromStat(char* filePath)
{
    int fileSize = 0;
    int fd = open(filePath, O_RDONLY);
    if(fd >= 0)
    {
        struct stat fileStat;
        int ret = fstat(fd, &fileStat);
        if(ret != -1)
        {
            fileSize = fileStat.st_size;
        }
        close(fd);
    }
    return fileSize;
}

int main()
{
    printf("file size:%d\n", getFileSizeFromTell("./testfile.txt"));
    printf("file size:%d\n", getFileSizeFromStat("./testfile.txt"));
    return 0;
}

文件testfile.txt的内容是:123456

运行程序输出:

file size:6

file size:6

可以看到正确的获取了文件的大小

相关推荐
xx~t19 分钟前
嵌入式——Linux软件编程2
linux·运维·服务器·c语言·学习方法
luj_17684 小时前
变频技术核心原理揭秘
服务器·c语言·开发语言·经验分享·算法
_Narcissus_4 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
松小白song4 小时前
嵌入式通信协议全解:UART、RS232、RS485、I²C、SPI 与 CAN 的本质区别与选型指南
c语言·开发语言
Fa_Mian_Tuan4 小时前
图论基础 | 邻接多重表原理剖析 + 完整可运行C语言代码(插边/删边/释放)
c语言·数据结构·笔记·算法·图论
_Narcissus_5 小时前
B+树的概念和操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
octopus_c5 小时前
数据结构:二叉树
c语言·数据结构
wuminyu6 小时前
JDK21中FFM api的upcall回调机制解析
java·linux·c语言·jvm·c++
个 人 练 习 生6 小时前
数据结构链表:带头双向循环链表
c语言·数据结构·经验分享·学习·其他·链表
不灭的黄金瞳1236 小时前
编译与链接
c语言