如何解决在 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
来确定的。
statvfs()
函数将获取有关包含以路径命名的文件的文件系统的信息。
man page 声明:
函数 statvfs()
返回有关已安装文件系统的信息。 path
是挂载的文件系统中任何文件的路径名。
根据您的评论:
看看std::filesystem::directory_entry::file_size
的例子
或者更好:Overview of Filesystem library
如果还不清楚:
- 遍历目录
- 如果您对条目感兴趣,请将大小添加到总金额中
- 如果条目是另一个目录,递归枚举大小(提示:std::filesystem::recursive_directory_iterator)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。