Cpp基础:获取文件大小

方式1:

 通过open拿到文件描述符,创建个stat结构体,里面包含了文件信息,提交给fstat方法后,就可以拿到文件的信息了,里面就有文件的大小

#include <sys/stat.h> //在Unix/Linux系统下使用

 fd = open("lseek.txt", O_RDWR|O_CREAT, 0644);
    if(fd < 0){
        perror("open lseek.txt error");
        exit(1);
  }
   struct stat fileStat;
   fstat(fd,&fileStat);
//    stat("lseek.txt",&fileStat); //或者是通过stat使用文件路径获取文件描述

  std::cout<< "当前文件指针偏移:"
    <<lseek(fd,0,SEEK_CUR)
    << "文件大小:" << fileStat.st_size
    << std::endl;

方式2:

        通过lseek指针移动到文件结尾,获取指针的偏移量来获取文件的大小,不推荐该方式,文件大的时候速度会慢

int get_file_size(){
    int fd;
    fd = open("lseek.txt", O_RDWR|O_CREAT, 0644);
    if(fd < 0){
        perror("open lseek.txt error");
        exit(1);
    }
    int file_size = lseek(fd,0,SEEK_END); //将文件指针移动到末尾,返回的就是文件结尾处的偏移量,也就是文件大小
    std::cout<< "当前文件大小:"
             <<file_size
             << std::endl;
}

方式3

        通过c++的filesystem库来获取,需要添加头文件<filesystem>

[]{


    std::string filePath = "lseek.txt";  // 替换为您要获取大小的文件路径

    try {
        // 使用std::filesystem::file_size函数获取文件大小
        std::uintmax_t fileSize = std::filesystem::file_size(filePath);

        std::cout << "文件大小为:" << fileSize << " 字节" << std::endl;
    } catch (const std::filesystem::filesystem_error& e) {
        std::cerr << "发生错误:" << e.what() << std::endl;
    }

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值