技术文摘
C++获取文件大小的常用技巧分享
2025-01-01 23:59:09 小编
C++获取文件大小的常用技巧分享
在C++编程中,经常会遇到需要获取文件大小的情况,比如在文件处理、数据存储等应用场景中。下面将为大家分享几种C++中获取文件大小的常用技巧。
方法一:使用stat结构体
在C++中,可以利用<sys/stat.h>头文件中的stat函数来获取文件的详细信息,其中就包括文件大小。示例代码如下:
#include <iostream>
#include <sys/stat.h>
int main() {
struct stat fileStat;
const char* filePath = "example.txt";
if (stat(filePath, &fileStat) == 0) {
std::cout << "文件大小: " << fileStat.st_size << " 字节" << std::endl;
} else {
std::cerr << "获取文件大小失败" << std::endl;
}
return 0;
}
这种方法适用于大多数Unix-like系统和Windows系统。
方法二:使用fseek和ftell函数(针对文件流)
当通过文件流操作文件时,可以结合fseek和ftell函数来获取文件大小。示例代码如下:
#include <iostream>
#include <cstdio>
int main() {
FILE* file = fopen("example.txt", "rb");
if (file!= NULL) {
fseek(file, 0, SEEK_END);
long fileSize = ftell(file);
fclose(file);
std::cout << "文件大小: " << fileSize << " 字节" << std::endl;
} else {
std::cerr << "打开文件失败" << std::endl;
}
return 0;
}
这种方法主要用于以C风格的文件流方式操作文件。
方法三:使用C++标准库的文件流
在C++标准库中,也可以通过ifstream来获取文件大小。示例代码如下:
#include <iostream>
#include <fstream>
int main() {
std::ifstream file("example.txt", std::ios::binary | std::ios::ate);
if (file.is_open()) {
std::streampos fileSize = file.tellg();
std::cout << "文件大小: " << fileSize << " 字节" << std::endl;
file.close();
} else {
std::cerr << "打开文件失败" << std::endl;
}
return 0;
}
不同的方法适用于不同的场景,开发者可以根据实际需求选择合适的方式来获取文件大小,以提高程序的效率和可维护性。
- Win11 共享文件夹的创建方法
- Win11 本地用户和组的管理及创建用户管理员的方法
- 如何恢复 Win11 安全中心删除的文件
- Win11 电脑重装方法及系统重新安装图文教程
- Win11 摄像头禁用后的开启与恢复方法
- Win11 更新后卡顿显著的应对之策
- Win11 策略服务未运行的解决之道
- Win11 打印机任务的位置及查看方法
- Win11复制粘贴故障的解决之道
- Win11 任务栏不显示时间的处理办法
- Win11 系统语言更改方法:从简体到繁体
- Win11 创建本地连接的步骤与方法
- Win11 操作中心的打开位置及方法
- Win11 玩 lol 卡顿的完美解决之道
- Win11 软件界面默认最大化的设置方法