Qt下每天自动创建日期文件 您所在的位置:网站首页 qt中创建文件夹 Qt下每天自动创建日期文件

Qt下每天自动创建日期文件

2024-05-26 07:08| 来源: 网络整理| 查看: 265

文章目录 前言一、需要哪些类实现该功能?1. QTime类2. QTimer类3. QDir类4. QFile类 二、如何实现1.实例化定时器对象,绑定信号和槽2.判断是否到达新的一天3.创建新的文件夹和文件 总结

前言

在进行项目开发时,我们可能要将日志文件长期保存(本文不谈QT自带的日志类),并按照/2020/09/09-11/log.txt这种模式保存,或者保存某些信息时要求保存的文件自动按时间分类,那我们就需要在每天00:00:00时创建新的文件夹和文件。

一、需要哪些类实现该功能? 1. QTime类

获取当前时间,生成当前日期的文件夹。

QDateTime current_date_time =QDateTime::currentDateTime(); QString current_date =current_date_time.toString(“yyyy.MM.dd hh:mm:ss.zzz ddd”); current_date字符串结果为"2020.09.21 17:17:01.445 周五",

我们可以根据获取到的日期字符串创建自己的时间日期文件

2. QTimer类

主要用来设置定时器,定时每隔1000ms读取一次当前时间,若当前时间满足新的一天的要求(00:00:00),就创建新的日期文件夹和文件。

3. QDir类

创建文件夹需要的类

4. QFile类

对文件操作需要的类

二、如何实现

直接上源码(示例):

1.实例化定时器对象,绑定信号和槽 /******************************************** * 函数名称:Create_Datafile() * 功能: * 1.创建定时器对象,每个一秒进入槽函数Updata_time()判断 * 是否为新的一天。 * * 2.将新的一天的事件信号和每天创建新文件的槽函数进行绑定。 * 工作方式: * 参数:无参数 * 返回值:无返回值 * 备注: * 修改记录 *********************************************/ void MainWindow::Create_Datafile() { data_time = new QTimer(this); connect(data_time,&QTimer::timeout,this,&MainWindow::Updata_time); data_time->start(1000); connect(this,&MainWindow::New_day,this,&MainWindow::Updata_File); } 2.判断是否到达新的一天

代码如下(示例):

/******************************************** * 函数名称:Updata_time() * 功能:获取当前时间,判断是到了新的一天(即00::00::00), * 若是新的一天,发射New_day()信号,槽函数Updata_File() * 去处理生成新文件。 * 工作方式: * 参数:无参数 * 返回值:无返回值 * 备注: * 修改记录 *********************************************/ void MainWindow::Updata_time() { QDateTime current_time = QDateTime::currentDateTime(); QString Now_time = current_time.toString("hh:mm:ss"); if(Now_time == "00:00:00"){ emit New_day(); } }

emit New_day(); //自定义槽函数 在哪实现就在那定义该信号,比如我的就在MainWindow类中定义。

3.创建新的文件夹和文件 /******************************************** * 函数名称:Updata_File() * 功能:生成日期文件夹,例: * 2020/2020-09/2020-09-11/log.txt * 工作方式: * 参数:无参数 * 返回值:无返回值 * 备注: * 当有0点的信号发过来时,进入该槽函数,创建新的文件夹和文件 * 修改记录 *********************************************/ void MainWindow::Updata_File() { QDateTime datatime = QDateTime::currentDateTime(); QString Year = datatime.toString("yyyy"); QString Year_M = Year + "/" + datatime.toString("yyyy-MM"); QString Year_M_D = Year_M + "/" + datatime.toString("yyyy-MM-dd"); QDir dir_Y; QDir dir_M; QDir dir_D; QFile file_log; QFile file_warnig; QFile file_data; if(!dir_Y.exists(Year)) { dir_Y.mkdir(Year); dir_M.mkdir(Year_M); dir_D.mkdir(Year_M_D); dir_D = Year_M_D; //创建yyyy-MM-dd 日志文件 file_log.setFileName(dir_D.filePath("log.txt")); if(file_log.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_log.write("somthing"); } file_log.close(); //创建yyyy-MM-dd 报警文件 file_warnig.setFileName(dir_D.filePath("warnig.txt")); if(file_warnig.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_warnig.write("abc"); } file_warnig.close(); //创建yyyy-MM-dd 数据文件 file_data.setFileName(dir_D.filePath("data.txt")); if(file_data.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_data.write("ASDFGH"); } file_data.close(); } else if(!dir_M.exists(Year_M)) { dir_M.mkdir(Year_M); dir_D.mkdir(Year_M_D); dir_D = Year_M_D; //创建yyyy-MM-dd 日志文件 file_log.setFileName(dir_D.filePath("log.txt")); if(file_log.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_log.write("somthing"); } file_log.close(); //创建yyyy-MM-dd 报警文件 file_warnig.setFileName(dir_D.filePath("warnig.txt")); if(file_warnig.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_warnig.write("abc"); } file_warnig.close(); //创建yyyy-MM-dd 数据文件 file_data.setFileName(dir_D.filePath("data.txt")); if(file_data.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_data.write("ASDFGH"); } file_data.close(); } else if(!dir_D.exists(Year_M_D)) { dir_D.mkdir(Year_M_D); dir_D = Year_M_D; //创建yyyy-MM-dd 日志文件 file_log.setFileName(dir_D.filePath("log.txt")); if(file_log.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_log.write("somthing"); } file_log.close(); //创建yyyy-MM-dd 报警文件 file_warnig.setFileName(dir_D.filePath("warnig.txt")); if(file_warnig.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_warnig.write("abc"); } file_warnig.close(); //创建yyyy-MM-dd 数据文件 file_data.setFileName(dir_D.filePath("data.txt")); if(file_data.open(QIODevice::WriteOnly |QIODevice::Text |QIODevice::Append)){ file_data.write("ASDFGH"); } file_data.close(); } } 总结

代码相对简单基本上可以直接看懂,有需求的话后续再对代码进行分析。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有