功能:在QT下删除文件以及文件夹,并设置定时器每五秒监控文件夹,查看所存的文件夹个数是否满足个数
刚学C++不久,记录一下
头文件:
#include <QMainWindow>
#include <QDir>
#include <QFile>
#include <QFileDialog>
#include <QFileInfo>
#include <QFileInfoList>
#include <QString>
#include <QTimer>
private:
QDir *dir;
QString fileName;
QTimer *time_update;
QFileInfo curFile;
QFileInfoList fileList;
int fileMax;
private slots:
void deleteOver();
cpp:
#include "mainwindow.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
fileMax = 2;
fileName = QFileDialog::getExistingDirectory( NULL, tr( "选择文件夹" ),"Z:\\", QFileDialog::ShowDirsOnly );
dir = new QDir( fileName );
int fileCount = dir->count();
if( fileCount > fileMax )
{
deleteOver();
qDebug() << fileName;
qDebug() << fileCount;//该文件数量包括“.”和“..”(即当前目录和上层目录)文件,这俩个文件被隐藏
}
else
{
qDebug() << "***文件个数符合要求***";
}
time_update = new QTimer;
time_update->start( 5000 );
connect( time_update, SIGNAL( timeout() ),
this, SLOT( deleteOver() ) );
}
MainWindow::~MainWindow()
{
}
void MainWindow::deleteOver()
{
fileList = dir->entryInfoList( QDir::Files|QDir::Dirs|QDir::NoDotAndDotDot|QDir::NoSymLinks
|QDir::Hidden,QDir::Time|QDir::Reversed );
int infoNum = fileList.size();
qDebug() << "&&进入判断&&";
for( int i = 0; i <= infoNum - fileMax - 1; i++ )
{
curFile = fileList[i];
if( curFile.isFile() )//如果是文件,则删除文件
{
QFile fileTemp( curFile.filePath());
fileTemp.remove();
}
if( curFile.isDir() )//如果是文件夹,则删除文件夹
{
QDir dirTemp( curFile.absoluteFilePath() );
dirTemp.removeRecursively();
}
qDebug() << infoNum <<"***********" << curFile.absoluteFilePath();
}
qDebug() << "^^^完成判断^^^" << fileList.count();
}