Как получить общее количество файлов в каталоге с помощью стандартной библиотеки C++? Любая помощь приветствуется.Количество файлов в каталоге с использованием C++
ответ
Вы не можете. Самое близкое, что вы сможете получить, это использовать что-то вроде Boost.Filesystem
После этого это тривиально: 'int count = std :: difference (directory_iterator (dir_path), directory_iterator());' – MSalters
@MSalters, я не могу найти ссылку на 'std :: difference'. Вы уверены, что не имели в виду 'std :: distance'? Кроме того, вам понадобится 'static_cast
Я пытаюсь избежать ссылки на библиотеки Boost и использовать только заголовки для алгоритмов. – harik
Вам понадобится использовать собственный API или фреймворк.
Если вы не исключите в основном доступную стандартную библиотеку C, вы можете использовать ее. Потому что он доступен везде, в отличие от boost, это довольно удобный вариант!
Приводится пример here.
И здесь:
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
int main (void)
{
DIR *dp;
int i;
struct dirent *ep;
dp = opendir ("./");
if (dp != NULL)
{
while (ep = readdir (dp))
i++;
(void) closedir (dp);
}
else
perror ("Couldn't open the directory");
printf("There's %d files in the current directory.\n", i);
return 0;
}
И действительно
> $ ls -a | wc -l
138
> $ ./count
There's 138 files in the current directory.
Это не C++ вообще, но он доступен на большинстве, если не во всех операционных системах, и будет работать в C++ независимо.
ОБНОВЛЕНИЕ: Я исправлю свое предыдущее заявление об этом, являющемся частью стандартной библиотеки C - это не так. Но вы можете перенести эту концепцию в другие операционные системы, потому что у всех есть свои способы работы с файлами без необходимости извлекать дополнительные библиотеки.
-1: Стандартная библиотека C не дает возможности перечислить каталог. –
Это глупое голосование. Конечно, вы можете считать файлы с помощью стандартной библиотеки C.Возьмем пример, который я включил в свой пост, вместо того, чтобы называть «puts ...» внутри while, используемого для итерации по каждому файлу, просто «i ++» и объявить «int i» где-то выше. Конечно, нет функции «directory_get_file_count», но это не главное. Дело в том, что вы можете использовать его для получения желаемого результата, а именно количества файлов в папке. Черт возьми, позвольте мне изменить свой первоначальный ответ ложным ответом, сек – LukeN
-1, 'readdir' - это POSIX не стандарт C. – MSalters
Если они хорошо названы, отсортированы и имеют одинаковое расширение, вы можете просто подсчитать их со стандартной библиотекой C++.
Предположим, что имена файлов похожи на «img_0.jpg..img_10000.jpg..img_n.jpg», Просто проверьте, находятся ли они в папке или нет.
int Trainer::fileCounter(string dir, string prefix, string extension)
{
int returnedCount = 0;
int possibleMax = 5000000; //some number you can expect.
for (int istarter = 0; istarter < possibleMax; istarter++){
string fileName = "";
fileName.append(dir);
fileName.append(prefix);
fileName.append(to_string(istarter));
fileName.append(extension);
bool status = FileExistenceCheck(fileName);
returnedCount = istarter;
if (!status)
break;
}
return returnedCount;
}
bool Trainer::FileExistenceCheck(const std::string& name) {
struct stat buffer;
return (stat(name.c_str(), &buffer) == 0);
}
старый вопрос, но так как он появляется в первую очередь на поиск Google, я думал, чтобы добавить свой ответ, так как у меня была потребность что-то подобное.
int findNumberOfFilesInDirectory(std::string& path)
{
int counter = 0;
WIN32_FIND_DATA ffd;
HANDLE hFind = INVALID_HANDLE_VALUE;
// Start iterating over the files in the path directory.
hFind = ::FindFirstFileA (path.c_str(), &ffd);
if (hFind != INVALID_HANDLE_VALUE)
{
do // Managed to locate and create an handle to that folder.
{
counter++;
} while (::FindNextFile(hFind, &ffd) == TRUE);
::FindClose(hFind);
} else {
printf("Failed to find path: %s", path.c_str());
}
return counter;
}
- 1. Количество файлов в каталоге
- 2. Количество файлов в каталоге HDFS
- 3. Найти количество файлов в каталоге
- 4. Получить количество файлов в каталоге
- 5. подсчитывает количество файлов с заданным расширением в каталоге - C++?
- 6. подсчитать количество файлов в FTP-каталоге Использование C#
- 7. Google Диск: максимальное количество файлов в каталоге
- 8. получить количество строк всех файлов в каталоге
- 9. Максимальное количество файлов в одном каталоге?
- 10. цикл через фиксированное количество файлов в каталоге
- 11. Узел JS: получить количество файлов в каталоге
- 12. php подсчитывает количество файлов в каталоге
- 13. C: Как подсчитать количество файлов и подкаталогов в каталоге
- 14. Нужно объединить большое количество файлов в каталоге
- 15. Каково максимальное количество файлов в каталоге? (Linux)
- 16. Найти количество текстовых файлов в каталоге рекурсивно
- 17. Получить последнее X количество файлов в каталоге
- 18. Linux: посмотреть количество файлов в каталоге
- 19. Как подсчитать количество файлов в каталоге Linux?
- 20. Как подсчитать количество совпадений файлов в каталоге
- 21. Как подсчитать количество файлов в каждом каталоге?
- 22. Unix найти среднее количество файлов в каталоге
- 23. просмотр файлов в каталоге с использованием perl
- 24. чтение файлов в каталоге C++
- 25. Чтение нескольких файлов в каталоге в C++
- 26. Подсчет количества файлов в каталоге с использованием Java
- 27. Как обрабатывать файлы в каталоге с использованием многопоточности C#
- 28. Scala - подсчитать количество файлов в каталоге с определенным расширением файла
- 29. Как подсчитать количество файлов в каталоге с помощью Python
- 30. Как получить количество файлов в каталоге с помощью jquery?
Работа с каталогом относительно ОС, в которой вы находитесь, к сожалению. Итак, отправляйте сообщение с какой ОС вы пытаетесь, тогда, возможно, мы сможем вам помочь. – Daniel
Кросс-платформенный код для работы как с Windows, так и с Linux. Я использую mingw, gcc и msvc вместе с библиотекой wxWidgets, используя boost, но не привязываясь к его библиотекам, включая только заголовки. Функции fstat и _stat у нас есть в #include. , чтобы получить информацию о файле. Есть ли у нас аналогичная поддержка для получения сведений о каталогам? –
harik