要在Qt C++中递归遍历文件夹并获取3天前的文件列表,可以结合使用QDir
和QFileInfo
类。以下是一个示例程序,展示如何实现这一功能:
#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();
}
代码说明:
listOldFiles函数:
- 输入参数包括路径字符串、用于存储结果的
QStringList
以及天数。 - 使用
QDir
和entryInfoList()
获取指定路径下所有条目(包括子目录)。 - 创建一个表示3天前日期的
threshold
对象。 - 遍历每个条目。如果它是一个目录,则递归调用
listOldFiles()
;如果是文件,则检查其最后修改时间是否早于阈值,如果是则将其路径添加到结果列表。
- 输入参数包括路径字符串、用于存储结果的
main函数:
- 初始化应用程序,并定义需要遍历的目标文件夹路径。
- 调用
listOldFiles()
函数以获取3天前的文件列表。 - 输出所有找到的符合条件的旧文件路径。
使用说明:
- 将
"你要遍历的文件夹路径"
替换为实际需要遍历的目录。 - 编译并运行该程序,你会看到控制台输出该目录及其子目录下所有最后修改日期在三天之前的文件名。
这样就可以轻松地找到指定目录及其子目录中三天前修改过的所有文件。如果有其他问题,请告诉我!
内容由零声教学AI助手提供,问题来源于学员提问