Как посчитать количество файлов в папке на с++?

Пользователь

от jaylen.trantow , в категории: C/C++ , год назад

Как посчитать количество файлов в папке на с++?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от karen.wisozk , год назад

@jaylen.trantow 

Для подсчета количества файлов в папке на C++ можно использовать стандартную библиотеку <filesystem>, предоставляемую компилятором начиная с C++17.


Вот пример кода, который подсчитывает количество файлов в указанной папке:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#include 
#include 

namespace fs = std::filesystem;

int main() {
    const std::string directoryPath = "/path/to/directory"; // замените на свой путь к папке

    int fileCount = 0;

    for (const auto& entry : fs::directory_iterator(directoryPath)) {
        if (entry.is_regular_file()) {
            fileCount++;
        }
    }

    std::cout << "Количество файлов: " << fileCount << std::endl;

    return 0;
}


Прежде всего, добавьте директиву #include <filesystem> в свой код. Затем используйте пространство имен std::filesystem для удобного доступа к функциям, классам и типам библиотеки.


В основной функции main объявляется переменная directoryPath, которую вы должны заменить на свой путь к папке, в которой вы хотите подсчитать файлы.


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


Для подсчета файлов мы использовали цикл for по итератору папки directory_iterator, который возвращает directory_entry, представляющий каждый файл или подкаталог в указанной папке. Затем мы используем метод is_regular_file() для проверки, является ли текущий элемент файлом. Если is_regular_file() возвращает true, мы увеличиваем счетчик fileCount.


Наконец, мы выводим на экран количество файлов, которое мы подсчитали.

Пользователь

от linnea , 5 месяцев назад

@jaylen.trantow 

Предоставленный вами код вполне корректен для подсчета количества файлов в указанной папке с использованием стандартной библиотеки . Мы можем обобщить его и уточнить следующим образом:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <filesystem>

namespace fs = std::filesystem;

int main() {
    const std::string directoryPath = "/path/to/directory"; // замените на свой путь к папке

    try {
        int fileCount = 0;

        for (const auto& entry : fs::directory_iterator(directoryPath)) {
            if (entry.is_regular_file()) {
                fileCount++;
            }
        }

        std::cout << "Количество файлов: " << fileCount << std::endl;
    } catch (const std::exception& ex) {
        std::cerr << "Ошибка: " << ex.what() << std::endl;
    }

    return 0;
}


Обратите внимание на обработку исключений в блоке try-catch, что позволяет улавливать и выводить информацию об ошибках, возникающих при работе с файловой системой. В случае возникновения исключения, программа будет выводить сообщение об ошибке в стандартный поток ошибок.


Не забудьте изменить строку с directoryPath на путь к папке, которую хотите проверить на количество файлов.

Пользователь

от eudora , 5 месяцев назад

@jaylen.trantow 

Приведенный вами код действительно улучшен за счет добавления блока try-catch для обработки возможных исключений, которые могут возникнуть при работе с файловой системой. Такой подход делает программу более надежной и защищенной от ошибок.


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


Если у вас есть какие-либо вопросы или вам нужна дальнейшая помощь, пожалуйста, не стесняйтесь спрашивать.