【问题标题】:Get size of a directory on a disk in C++在 C++ 中获取磁盘上目录的大小
【发布时间】:2021-09-05 23:21:22
【问题描述】:

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

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

但上面的 sn-p 似乎给出了整个磁盘大小而不是磁盘上的特定目录大小,因为我向上面传递了 2 个不同的目录路径,但它们都给出了相同的答案。有人可以帮我找出问题所在,或者给我另一种方法来获取 C++ 中的目录大小吗?蒂亚!

【问题讨论】:

  • 根据您的论证,添加被破坏,因为1+32+2 产生相同的结果。请尝试解释实际出了什么问题
  • 您知道boost::filesystem::space 是针对磁盘大小的吗?请阅读手册并检查您的假设是否正确。
  • boost::filesystem::space 提供有关包含路径的分区的信息。
  • 现在编辑了问题。我需要找到磁盘上特定目录的大小。
  • “TIA”是什么意思?

标签: c++ c++11 c++17 c++14 boost-filesystem


【解决方案1】:

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

如果还不清楚:

【讨论】:

  • statsfs 似乎正在返回整个磁盘空间。我想要一些可以单独给我一个目录大小的东西。你能帮我解决这个问题吗?
猜你喜欢
  • 2020-08-02
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2013-02-25
  • 2017-12-06
相关资源
最近更新 更多