c++ - 使用 boost 查找目录空间详细信息

标签 c++ linux boost filesystems cross-platform

<分区>

enter image description here我刚刚开始探索“Boost”库。我的主要动机是查找目录的空间详细信息。我知道这可以使用 'boost::filesystem' 来完成。 我正在尝试编写与平台无关的代码。对于 Windows,它工作正常。并为给定的输入提供适当的输出。但是,对于 Linux(ubuntu),我可以看到奇怪的输出。当我通过命令行传递输入时,对于每个输入它都显示相同的输出。我不知道这里出了什么问题。您的帮助将不胜感激。提前致谢。另请查看图片。

我写的代码:

int main(int argc, char*argv[])
{
#ifdef BOOST_WINDOWS_API
cout<<"\n Running on windows";
#else
cout<<"\n Running on linux";
#endif

if(argc !=2 )
{
    cout<<"\n Invalid inputs";
    return 0;
}

fs::path p(argv[1]);

fs::space_info sp = space(p);

cout<<"\n directory capacity is: "<<sp.capacity;
cout<<"\n directory free is: "<<((sp.free;
cout<<"\n directory available is: "<<sp.available;'

cout<<"\n directory capacity is: "<<((sp.capacity/1024)/1024);
cout<<"\n directory free is: "<<((sp.free)/1024);
cout<<"\n directory available is: "<<((sp.available/1024)/1024);
}

最佳答案

如果您提供的路径位于同一文件系统(同一设备和分区)上,则对于每个输入,它都显示应有的相同输出。

  • capacity -- 文件系统的总大小,以字节为单位
  • free -- 文件系统上的可用空间,以字节为单位
  • available -- 非特权进程可用的空闲空间(可能等于或小于空闲空间)

如果您在 Windows 上有不同,那么您要么使用了多个分区,要么指向了受限文件夹。

在 POSIX 系统上,分区上的所有目录默认共享该分区上的空间。如果您想知道该目录中的文件使用了多少空间,您必须遍历目录中的所有文件并汇总大小(这就是 Windows 的 dir 命令或 linux ls 实用程序所做的)。

关于c++ - 使用 boost 查找目录空间详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43446295/

相关文章:

c++ - 从 YUY2 到 RGB24 的快速转换

c - 获取每个页面错误的信号

linux - 在linux中找到最高有效位

c++ - 使用 boost::shared_ptr 引用迭代器而不复制数据?

c++ - 是否可以将 Windows 位图绘制到 cairo 表面?

c++ - 类 Python C++ 装饰器

c++ - 从 vector C++ 中删除一个字符串

linux - lib32-ncurses 没有安装到 rootfs

c++ - 如何递减一个位串?

c++ - 什么是 C++ 运算符 ->。 (箭头点运算符)在 boost 文档中找到?