如何快速计算文件系统中的所有文件?

时间:2017-06-11 13:22:30

标签: c++ linux qt filesystems

我需要将*NIX文件系统中的所有文件作为项目的一部分来计算,以实现此目的,创建递归方法如下:

// private member -> quint64 m_files_count = 0;
quint64 MyClass::filesToCount(const QString &searchDirs, const QStringList &excl_dirs = QStringList())
{
    QDir dir(searchDirs);
    if(excl_dirs.contains(dir.absolutePath()))
        return 0;
    QStringList dirs = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::NoSymLinks);
    foreach(QString d, dirs)
    {
        filesToCount(dir.absoluteFilePath(d), excl_dirs);
    }
    QStringList files = dir.entryList(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    m_files_count += files.size();
    return m_files_count;
}

但这种方法效果很慢,需要时间! 你能建议任何快速计算文件系统中所有文件的方法吗?

种类问候!

0 个答案:

没有答案