获取磁盘上目录的大小(以 C++为单位)



以下是我用来在 c++ 中获取目录大小的代码片段:

boost::system::error_code ec;
boost::filesystem::space_info si =
boost::filesystem::space(path, ec);
if (ec.value() == 0) {
cout << si.capacity - si.available;
}

但是上面的代码片段似乎给出了整个磁盘大小而不是磁盘上的特定目录大小,因为我将 2 个不同的目录路径传递给上面,但它们都给出了相同的答案。有人可以帮助我找出问题所在,或者给我另一种在 c++ 中获取目录大小的替代方案吗?啪!

Boost Reference指出:

space_info对象的值的确定方式,就像使用 ISO/IEC 9945statvfs()来获取 ISO/IEC 9945struct statvfs一样。

开放组引用声明:

statvfs()函数应获取有关包含按路径命名的文件文件系统的信息。

手册页指出:

该函数statvfs()返回有关已挂载文件系统的信息。path是挂载文件系统中任何文件的路径名。

根据您的评论:

看看 std::filesystem::d irectory_entry::file_size
或更好的示例:文件系统库概述

如果仍然不清楚:

  • 循环访问目录
  • 如果您感兴趣的条目,请将大小添加到总金额中
  • 如果 entry 是另一个目录,则递归枚举大小(提示:std::文件系统::recursive_directory_iterator)

最新更新