c++17中推荐使用std::Filesystem::file_size获取文件大小。需包含头文件并引入命名空间,调用fs::file_size(path)返回字节数,但文件不存在、为目录或无权限时会抛出异常,因此应结合try-catch处理错误,或先通过fs::exists和fs::is_regular_file检查路径有效性,确保安全跨平台使用。

在C++17及以后的标准中,std::filesystem::file_size 函数提供了一种简单、安全的方式来获取文件的大小(以字节为单位)。这个函数属于 <filesystem></filesystem> 头文件,使用前需要确保编译器支持 C++17 或更高版本。
包含头文件并启用命名空间
使用 file_size 函数前,需包含 <filesystem></filesystem> 并引入 std::filesystem 命名空间:
#include iostream>
#include
Namespace fs = std::filesystem;
基本用法:获取文件大小
直接调用 fs::file_size(path),传入文件路径即可返回文件字节数:
try {
uintmax_t size = fs::file_size(“example.txt”);
std::cout } catch (const fs::filesystem_error& e) {
std::cerr }
注意:该函数在文件不存在、路径是目录或无权限访问时会抛出异常,建议用 try-catch 包裹。
立即学习“C++免费学习笔记(深入)”;
检查路径有效性再获取大小
为避免异常,可先判断路径是否存在且为普通文件:
- fs::exists(path):确认文件存在
- fs::is_regular_file(path):确保不是目录或符号链接等
示例代码:
fs::path p = “data.bin”;
if (fs::exists(p) && fs::is_regular_file(p)) {
uintmax_t size = fs::file_size(p);
std::cout } else {
std::cout }
基本上就这些。只要编译环境支持 C++17,file_size 是获取文件大小最推荐的方式,简洁且跨平台。注意处理异常和路径类型即可。