删除指定目录下的全部过期文件,以天为单位

#include <QCoreApplication>
#include <QDirIterator>
#include <QDebug>

void deleteFile(QFileInfo& logFile){
    // 获取三天前的日期时间点
    QDateTime cutoffTime = QDateTime::currentDateTime().addDays(-1);
    //QDateTime cutoffTime = QDateTime::currentDateTime();
    QString fileName = logFile.fileName();
    if (fileName.contains("backup_") && fileName.contains(".log")) {
        // 提取日期部分(示例:从log_20231101.log提取20231101)
        QString datePart = fileName.mid(7, 8);
        QDate fileDate = QDate::fromString(datePart, "yyyyMMdd");

        if (fileDate.isValid() && fileDate < cutoffTime.date()) {
            QFile logFile2(logFile.absoluteFilePath());
            if (!logFile2.remove()) {
                qWarning() << "删除失败:" << logFile.fileName();
            }
        }
    }
}

void traverseDirectory(const QString &path) {
    QDirIterator it(path,
                    QDir::Files | QDir::NoDotAndDotDot, // 仅遍历文件,排除"."和".."
                    QDirIterator::Subdirectories);    // 递归遍历子目录

    while (it.hasNext()) {
        QString filePath = it.next();
        QFileInfo fileInfo(filePath);

        // 输出文件路径和类型
        qDebug() << "File:" << fileInfo.absoluteFilePath()
                 << "Size:" << fileInfo.size() / 1024 << "KB";
        deleteFile(fileInfo);
    }
}

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

    QString targetPath = "/root/qts/SanliApp/build/unknown-Debug/logs_bf"; // 替换为实际路径
    traverseDirectory(targetPath);

    return a.exec();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值