gpt4 book ai didi

c++ - 获取文件夹的大小

转载 作者:行者123 更新时间:2023-11-28 05:41:56 34 4
gpt4 key购买 nike

我在 Windows 上的 visual studio 2015 中工作。是否有可能从此代码中的路径获取每个文件或文件夹的大小:我需要获得像 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>标题你确实可以,只是#include <experimental/filesystem> (实验性的,因为它是一个 C++17 特性——但这很好,因为你说你正在使用 VS2015,所以它可以使用)并检查以下内容以执行你需要的操作:

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

std::experimental::filesystem::file_size以整数字节返回路径给出的文件大小,注意这个path不是 const char*std::string路径而是一个 fs::path作为文件系统 header 的一部分。

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

#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);
}
}

关于c++ - 获取文件夹的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36925472/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com