QT开发中文网

qt C++ 递归遍历文件列表,获取3天前的文件列表

要在Qt C++中递归遍历文件夹并获取3天前的文件列表,可以结合使用QDirQFileInfo类。以下是一个示例程序,展示如何实现这一功能:

#include <QCoreApplication>
#include <QDir>
#include <QStringList>
#include <QFileInfoList>
#include <QDateTime>
#include <iostream>

void listOldFiles(const QString& path, QStringList& oldFileList, int days) {
    QDir dir(path);
    QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries);

    // 获取当前时间,并减去指定的天数
    QDateTime threshold = QDateTime::currentDateTime().addDays(-days);

    for (const QFileInfo& entry : entries) {
        if (entry.isDir()) {
            // 如果是目录,递归调用
            listOldFiles(entry.absoluteFilePath(), oldFileList, days);
        } else {
            // 如果是文件,检查修改时间是否早于阈值
            if (entry.lastModified() < threshold) {
                oldFileList.append(entry.absoluteFilePath());
            }
        }
    }
}

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    QString folderPath = "你要遍历的文件夹路径";  // 替换为你的文件夹路径
    QStringList oldFiles;
    
    // 调用函数,获取3天前的文件列表
    listOldFiles(folderPath, oldFiles, 3);

    std::cout << "三天前的文件:" << std::endl;
    for (const QString &file : oldFiles) {
        std::cout << file.toStdString() << std::endl;  // 输出所有找到的旧文件
    }

    return a.exec();
}

代码说明:

  1. listOldFiles函数:

    • 输入参数包括路径字符串、用于存储结果的QStringList以及天数。
    • 使用 QDirentryInfoList() 获取指定路径下所有条目(包括子目录)。
    • 创建一个表示3天前日期的 threshold 对象。
    • 遍历每个条目。如果它是一个目录,则递归调用 listOldFiles();如果是文件,则检查其最后修改时间是否早于阈值,如果是则将其路径添加到结果列表。
  2. main函数:

    • 初始化应用程序,并定义需要遍历的目标文件夹路径。
    • 调用 listOldFiles() 函数以获取3天前的文件列表。
    • 输出所有找到的符合条件的旧文件路径。

使用说明:

  • "你要遍历的文件夹路径" 替换为实际需要遍历的目录。
  • 编译并运行该程序,你会看到控制台输出该目录及其子目录下所有最后修改日期在三天之前的文件名。

这样就可以轻松地找到指定目录及其子目录中三天前修改过的所有文件。如果有其他问题,请告诉我!


内容由零声教学AI助手提供,问题来源于学员提问

目录导航
  • 代码说明:
  • 使用说明:
  • 本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
    转载请注明出处:https://qt.0voice.com/?id=12811

    分享:
    扫描分享到社交APP
    上一篇
    下一篇
    发表列表
    游客 游客
    此处应有掌声~
    评论列表

    还没有评论,快来说点什么吧~

    联系我们

    在线咨询: 点击这里给我发消息

    微信号:3007537140

    上班时间: 10:30-22:30

    关注我们
    x

    注册

    已经有帐号?