How can I find the size of all files located inside a folder?

后端 未结 12 2380
萌比男神i
萌比男神i 2020-12-06 05:49

Is there any API in c++ for getting the size of a specified folder?

If not, how can I get the total size of a folder including all subfolders and files?

12条回答
  •  借酒劲吻你
    2020-12-06 06:09

    You can use "boost::filesystem"

    #include 
    
    namespace fs = boost::filesystem;
    
    unsigned long long int get_directory_size(const fs::path& directory){
        if (!fs::exists(directory)) return 0;
    
        if (fs::is_directory(directory)){
            unsigned long long int ret_size = 0;
            fs::directory_iterator m_dir_itr(directory);
    
            for (m_dir_itr = fs::begin(m_dir_itr); m_dir_itr != fs::end(m_dir_itr); ++m_dir_itr){
                fs::directory_entry m_dir_entry = *m_dir_itr;
                if (fs::is_regular_file(m_dir_entry.path())){
                    ret_size += fs::file_size(m_dir_entry.path());
                }else if (fs::is_directory(m_dir_entry.path())){
                    ret_size += get_directory_size(m_dir_entry.path());
                }
            }
    
            return ret_size;
        } else if (fs::is_regular_file(directory)){
            return fs::file_size(directory);
        }
    
        return 0;
    }
    
    #include 
    
    int main(int /*argc*/, char** /*argv*/) {
        // Assuming 'C:/Folder' be any directory then its size can be found using
        auto folder_size = get_directory_size("C:/Folder");
        printf("Size of 'C:/Folder' is %d\n",folder_size);
        return 0;
    }
    

提交回复
热议问题