Поскольку вы указали в комментариях, вы спрашиваете о Windows:
Файл указывается записью в индексе файла или в таблице файлов (MFT для NTFS, FAT для файловой системы FAT). Эта таблица расположена в специальной позиции физической файловой системы (например, жесткого диска) и содержит адрес и метаданные каждого файла. Размер файла - это фактический объем пространства, занимаемого файлом; это может быть ноль или любой больший размер. Если в файле нет данных, он пуст (размер = 0).
В файловых системах Windows размер каталога - это общая сумма всех файлов (и файлов в подпапках) в нем. Итак, пустой каталог имеет нулевой размер.
Источник: Почему пустая папка имеет нулевые байты на Windows?
STL filesystem::file_size
работает только для файлы, он выдает исключение для каталогов: filesystem error: cannot get file size: Is a directory [dir]
. Почему? Поскольку каталог - это просто запись в индексе или таблице файла.
Вкл. Windows, когда вы проверяете каталог, содержащий много подкаталогов / файлов, вы можете заметить сообщение "размер на диске" на Свойства накапливаются постепенно; из этого следует, что система рекурсивно выполняет итерацию по подкаталогам / файлам для суммирования всех размеров файлов ... Вы можете провести эксперимент, чтобы проверить, действительно ли полный размер равен сумме всех отдельных файлов (за исключением каталогов).