获取文件夹的大小

Getting the size of a folder

我在 visual studio 2015 年 windows 工作。是否有可能从此代码中的路径获取每个文件或文件夹的大小: 我需要获得像 int 这样的大小,千字节数

vector<string>listDirectories(const char *path) {
    DIR *dir = opendir(path);

    vector<string> directories;

    struct dirent *entry = readdir(dir);

    while (entry != NULL)
    {
        if (entry->d_type == DT_DIR)
            directories.push_back(entry->d_name);

        entry = readdir(dir);
    }

    closedir(dir);
    return directories;


}

使用新的 <filesystem> header 你确实可以,只是 #include <experimental/filesystem>(实验性的,因为它是 C++17 的特性——但这很好,因为你说你正在使用VS2015 所以它可以使用)并查看以下内容以执行您需要的操作:

http://en.cppreference.com/w/cpp/experimental/fs/file_size

std::experimental::filesystem::file_size returns路径给定的文件大小,整数字节,注意这个path不是const char*或者std::string 路径,而是作为文件系统 header.

一部分的 fs::path

假设问题 returns 中的函数是一个目录中的文件列表,您可以(未经测试)打印给定目录中的每个文件大小:

#include <iostream>
#include <fstream>
#include <experimental/filesystem>
#include <vector>

namespace fs = std::experimental::filesystem;

//...

int main(void) {
    std::vector<std::string> file_names_vec = listDirectories("dir");

    size_t folder_size = 0;
    for (auto it = file_names_vec.begin(); it != file_names_vec.end(); ++it) {
         fs::path p = *it;
         std::cout << "Size of file: " << *it << " = " << fs::file_size(p) << " bytes";
         folder_size += fs::file_size(p);
    }
}