Считаем размер папки через std::filesystem! Иногда нужно быстро… — C/C++ Ready | Программирование — TG.ME

Считаем размер папки через std::filesystem!

Иногда нужно быстро понять, сколько места занимает директория. Например, перед очисткой, анализом или проверкой файлов.

В C++17 для обхода файловой системы есть std::filesystem.

Подключим нужные заголовки:
#include <filesystem>
#include <iostream>


Для удобства заведём namespace:

namespace fs = std::filesystem;


Функция будет принимать путь к папке:

std::uintmax_t dir_size(const fs::path& root) {


Сначала заведём счётчик байт:

std::uintmax_t total = 0;


Теперь рекурсивно обойдём директорию:

for (const auto& entry : fs::recursive_directory_iterator(root)) {


Нас интересуют только обычные файлы. Папки и ссылки можно пропустить:

if (!entry.is_regular_file()) continue;


Размер файла добавляем в общий счётчик:

total += entry.file_size();


После обхода возвращаем результат:

return total;
}


Вызов может выглядеть так:

auto bytes = dir_size("logs");
std::cout << bytes << "\n";


В реальном коде стоит помнить про права доступа. Если часть файлов нельзя прочитать, можно использовать перегрузки с std::error_code, чтобы программа не падала на первом недоступном каталоге.

📣C++ Ready | #практика
❤8👍5🔥3
August 22, 2026 2.2K 17