目录的大小

sma*_*llB 18 c c++ windows winapi

有没有办法获得目录大小/文件夹大小而不实际遍历此目录并添加每个文件的大小?理想情况下想使用像boost这样的库,但win api也可以.

111*_*111 16

据我所知,你必须在大多数操作系统上进行迭代.

你可以看一下boost.filesystem,这个库有一个recursive_directory_iterator,它会迭代,但是系统上的文件会累积大小.

http://www.boost.org/doc/libs/1_49_0/libs/filesystem/v3/doc/reference.html#Class-recursive_directory_iterator

include <boost/filesystem.hpp>
int main()
{
    namespace bf=boost::filesystem;
    size_t size=0;
    for(bf::recursive_directory_iterator it("path");
        it!=bf::recursive_directory_iterator();
        ++it)
    {   
        if(!bf::is_directory(*it))
            size+=bf::file_size(*it);
    }   
}
Run Code Online (Sandbox Code Playgroud)

PS:你可以通过使用std :: accumulate和lambda我只是CBA来使这个更清洁