技术文摘
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;
}
不同的方法适用于不同的场景,开发者可以根据实际需求选择合适的方式来获取文件大小,以提高程序的效率和可维护性。
- 浏览器调试窗口中window.outerWidth与window.innerWidth存在差异的原因
- script标签引入JS文件致页面加载缓慢原因何在
- 网页源代码和页面内容不符时,怎样抓取正确的申请及浏览人数
- 移动端下载Linux根目录PDF文件显示未知文件原因及解决方法
- 菜名与价格如何对齐并绘制中间划线
- CSS3D变换助力打造个性化不规则div的方法
- React Native中父子状态和函数的访问
- 轮播图快速切换时闪动问题的解决方法
- 利用Sass Mixin与占位符实现代码复用的方法
- CSS制作渐变背景卡券缺口布局的方法
- 清除JavaScript `import()` 缓存的方法
- 打印HTML表单内容修改无效 正确克隆元素的方法
- 前端开发借助 AI:哪款工具才是你的最佳之选
- Chrome检视元素中阴影和箭头的含义是什么
- 移动端 H5 开发怎样防止 Tab 栏切换致使页面状态重置