我需要删除30天后在文件夹中创建的日志文件。这些文件是使用以下代码创建的:
QDateTime local(QDateTime::currentDateTime());
QString dir = QCoreApplication::applicationDirPath();
dir = dir+"/log/";
QString filename = dir+"console_"+local.date().toString("yyyyMMdd")+QString("_%1").arg(logPostfix,3, 10, QChar('0'))+".log";
QFile file(filename);
因此,日志文件将命名为console_currentDate_000.log。现在,我希望在30天后删除文件夹中的这些文件。如何检查确切的文件名并在30天后删除它。我想检查确切文件名的原因是,如果我重命名文件名,它不会删除该文件。意思是,我想保留日志文件。例如,keep_console_Date_000.log或console_Date_000_keep.log。下面是我尝试过的代码,但我不知道如何检查确切的文件名或模式。
void deleteoldfiles()
{
QDate day(QDate::currentDate());
day = day.addDays(-30); // Set for previous 30 days
QString path = QCoreApplication::applicationDirPath();
path = path+"/log/";
QString filename = QString("console_????????_%1.log").arg(logPostfix,3, 10, QChar('0'));
QDir dir(path);
QFileInfoList result = dir.entryInfoList( QDir::Files, QDir::DirsFirst);
for(int i=0; i<result.size(); i++)
{
QFileInfo file = result.at(i);
if(result.at(i).fileName() == filename)
{
QDate filecreated = result.at(i).created().date();
if(filecreated.daysTo(day)>0)
{
QString filepath = file.absoluteFilePath();
QDir deletefile;
deletefile.setPath(filepath);
deletefile.remove(filepath);
print_log("File "+filepath+" is deleted!!");
}
}
}
}