QT技巧系列(4)定时删除某目录下几天前的文件
采用递归和QDir实现对文件夹下所有文件遍历的方法,然后判断文件日期并进行相应的处理。
#include <QDir>
//******
//传入某个文件目录 "D:/wavelog/"
//******
//Qt实现遍历文件夹和文件目录(递归)
bool FindFileForDelete(const QString & path)
{
QDir dir(path);
if (!dir.exists())
return false;
dir.setFilter(QDir::Dirs|QDir::Files);
dir.setSorting(QDir::DirsFirst);
QFileInfoList list = dir.entryInfoList();
int i=0;
do{
QFileInfo fileInfo = list.at(i);
if(fileInfo.fileName()=="."|fileInfo.fileName()=="..")
{
i++;
continue;
}
bool bisDir=fileInfo.isDir();
if(bisDir)
{
qDebug() << qPrintable(QString("%1 %2 %3").arg(fileInfo.size(), 10)
.arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<endl;
FindFileForDelete(fileInfo.filePath());
}
else{
//如果是文件,判断文件日期 目前默认是30天。
QDateTime delDateTime = QDateTime::currentDateTime().addDays(-30);
qint64 nSecs = delDateTime.secsTo(fileInfo.birthTime());
if (nSecs < 0)
{
qDebug() << qPrintable(QString("%1 %2 %3").arg(fileInfo.size(), 10)
.arg(fileInfo.fileName(),10).arg(fileInfo.path()))<<endl;
//删除30天前的文件
fileInfo.dir().remove(fileInfo.fileName());
}
}
i++;
}while(i<list.size());
return true;
}
注:实战示例,解疑答惑。
--不间端地思考,实时地批判你的工作!