I want to count the number of files from a directory and all its subdirectories recursively. My code is:
int DocumentsManager
::CountFiles(QString path
) {
int sum = 0;
dir.
setFilter(QDir::AllDirs |
QDir::NoDotAndDotDot);
QFileInfoList lst = dir.entryInfoList();
for(int i = 0; i < lst.size(); i++)
{
sum = sum + CountFiles(lst.at(i).canonicalPath());
}
dir.
setFilter(QDir::Files);
return dir.entryInfoList().size() + sum;
}
int DocumentsManager::CountFiles(QString path)
{
int sum = 0;
QDir dir(path);
dir.setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
QFileInfoList lst = dir.entryInfoList();
for(int i = 0; i < lst.size(); i++)
{
sum = sum + CountFiles(lst.at(i).canonicalPath());
}
dir.setFilter(QDir::Files);
return dir.entryInfoList().size() + sum;
}
To copy to clipboard, switch view to plain text mode
The problem is that sometimes I got the following error:
ASSERT: i>=0 && i < size()
Do you have any idea why? Thank you.
Bookmarks