文件监控器

功能:在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();
}

猜你喜欢

转载自blog.csdn.net/Huahua12342234/article/details/80665916