c++如何获取文件的大小和修改日期_c++ 文件大小与修改日期获取方法
使用C++17filesystem可跨平台获取文件大小和修改日期,推荐std::filesystem::file_size和last_write_time,配合chrono处理时间转换;传统stat函数适用于旧版本C++,兼容性好但需注意平台差异。
使用C++17 filesystem可跨平台获取文件大小和修改日期,推荐std::filesystem::file_size和last_write_time,配合chrono处理时间转换;传统stat函数适用于旧版本C++,兼容性好但需注意平台差异。

在C++中获取文件的大小和修改日期,可以通过系统调用或标准库结合平台相关API实现。下面介绍跨平台(主要以Windows和Linux)常用的方法,使用(C++17起推荐)以及传统的stat函数。
C++17 filesystem 方法(推荐)
现代C++推荐使用 库,简洁且跨平台。示例代码:
#include编译时需启用C++17:g++ -std=c++17 file.cpp -o file (Linux)或在Visual Studio中设置语言标准。#include #include #include int main() { std::string filename = "test.txt";
if (std::filesystem::exists(filename)) { // 获取文件大小(字节) auto size = std::filesystem::file_size(filename); std::cout << "文件大小: " << size << " 字节\n"; // 获取最后修改时间 auto time = std::filesystem::last_write_time(filename); // 转换为本地时间并输出 auto sctp = std::chrono::time_point_cast<std::chrono::system_clock::duration>( time - std::filesystem::file_time_type::clock::now() + std::chrono::system_clock::now() ); std::time_t cftime = std::chrono::system_clock::to_time_t(sctp); std::cout << "修改日期: " << std::put_time(std::localtime(&cftime), "%Y-%m-%d %H:%M:%S") << '\n'; } else { std::cout << "文件不存在\n"; } return 0;}
传统 stat 方法(兼容旧版本C++)
适用于不支持C++17的环境,使用 和 。示例代码(Linux/Windows通用):
#include注意:#include #include int main() { std::string filename = "test.txt"; struct stat buffer;
if (stat(filename.c_str(), &buffer) == 0) { // 文件大小 std::cout << "文件大小: " << buffer.st_size << " 字节\n"; // 修改时间 std::time_t modTime = buffer.st_mtime; char* timeStr = std::ctime(&modTime); timeStr[strlen(timeStr)-1] = '\0'; // 去掉换行符 std::cout << "修改日期: " << timeStr << '\n'; } else { std::cout << "无法获取文件信息\n"; } return 0;}
stat 在Windows中可用,但路径分隔符需注意。Windows也提供 _stat 变体,如 _stat64 支持大文件。关键点总结
- 优先使用
std::filesystem::file_size()和std::filesystem::last_write_time()(C++17) - 时间处理较复杂,需将
file_time_type转为system_clock才能格式化输出 - 传统
stat方法兼容性好,适合嵌入式或老编译器环境 - 检查文件是否存在,避免操作失败
基本上就这些。根据项目环境选择合适方式,新项目建议直接用 。不复杂但容易忽略时间转换细节。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















