Qt - 30天后如何删除日志文件,文件名不固定

时间:2017-05-12 09:41:50

标签: c++ qt

我需要删除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!!");
            }
        }
    } 
}

0 个答案:

没有答案