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

时间:2017-04-17 06:28:41

标签: c++ linux boost filesystems cross-platform

enter image description here我刚刚开始探索“推动”#39;图书馆。我的主要动机是找到目录的空间细节。我知道这可以使用' 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);
}

1 个答案:

答案 0 :(得分:0)

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

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

如果你在Windows上有不同之处,那么你要么使用了几个分区,要么指向受限制的文件夹。

在POSIX系统上,默认情况下分区上的所有目录共享该分区上的空间。如果你想查找该目录中文件使用了多少空间,你必须迭代目录中的所有文件并汇总大小(这就是windows的dir命令或linux ls实用程序所做的)。