在 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++ 中获取目录大小的替代方法吗? TIA!

解决方法

Boost Reference 声明:

space_info 对象的值是通过使用 ISO/IEC 9945 statvfs() 获得 ISO/IEC 9945 struct statvfs 来确定的。

Opengroup Reference 声明:

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

man page 声明:

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

根据您的评论:

看看std::filesystem::directory_entry::file_size
的例子 或者更好:Overview of Filesystem library

如果还不清楚: