当前位置: 首页 > news >正文

Qt 当磁盘可用空间小于指定大小时删除早期的文件

1. 需求

用户反应,电脑由于自身磁盘空间只有128G,由于软件执行一次任务,就要录视频记录,导致磁盘空间爆满,电脑卡,无法再次生成视频

2. 分析:当时软件没有写自动删除视频的代码导致的。

可以写一个检查电脑磁盘的函数,自动检测存放视频的目录。如果磁盘可用空间小于指定的大小,就自动删除早期的视频,如果没有早期的视频,就递归删除现有的视频,直到磁盘可用空间大于指定的大小,如果全部删除,还是小于指定大小,则弹窗提示用户,删除其余不用的文件。

有如下方案:

1. 每隔一段时间,自动检查一次磁盘空间

2. 每次用户执行任务,检查一遍磁盘空间

3. 解决方案

两种方案都没啥问题,我采用了第二种

代码如下:

void Camera::checkDiskSpace() {if (getDiskSpace()) {emit notifyDiskSpaceInsufficient();// 磁盘空间小于阈值,则删除部分早期视频QDir VideoDir = QDir(qApp->applicationDirPath() + VIDEO_PLAYBACK_PATH);bool flag = false;QDateTime today = QDateTime::currentDateTime();for(QFileInfo fileInfo : VideoDir.entryInfoList()) {if (fileInfo.fileName()=="." || fileInfo.fileName()==".."){continue;}QDateTime date = fileInfo.lastModified();uint filedate = date.toTime_t();uint todayData = today.toTime_t();uint ruler = todayData - filedate;ruler /= (60 * 60 * 24);//如果文件修改时间大于七天,清理文件及文件夹//if (ruler > 7) {flag = true;if(fileInfo.isDir()) {QDir dir(fileInfo.filePath());dir.removeRecursively();}else {QFile::remove(fileInfo.filePath());}if(!getDiskSpace()) {break;}}if (flag) {WriteLog("由于磁盘可用空间小于视频存储阈值,已删除部分视频文件", "Camera");}}
}bool Camera::getDiskSpace()
{Q_D(Camera);auto path = qApp->applicationDirPath();auto storage = QStorageInfo(path);storage.refresh();auto availableSize = storage.bytesAvailable()/1024/1024/1024;// 与指定空间的大小auto needClean = availableSize < d->m_diskReserveSize;return needClean;
}

http://www.lryc.cn/news/126478.html

相关文章:

  • 浙大数据结构第七周之07-图6 旅游规划
  • RocketMQ双主双从同步集群部署
  • 分类预测 | MATLAB实现EVO-CNN多输入分类预测
  • DAY04_SpringMVC—SpringMVC简介PostMan和ApiFox工具使用SpringMVC请求与响应REST风格
  • phpstorm配置ftp同步文件到服务器
  • 前端jd要求:了解一门后端开发语言优先 解决方案之Node.js
  • 什么是ServiceMesh(Istio一)
  • 【腾讯云 Cloud Studio 实战训练营】Hexo 框架 Butterfly 主题搭建个人博客
  • 搭建Excel服务器
  • 渗透测试成功的8个关键
  • 【leetcode】链表part2
  • C#数据类型转换
  • mybatis-plus逻辑删除的坑
  • SQL Server基础之游标
  • (二)结构型模式:4、组合模式(Composite Pattern)(C++实例)
  • flask接口请求频率限制
  • javaweb监听器和juery技术
  • C++并发多线程--std::unique_lock的使用
  • 【ChatGLM】ChatGLM-6B模型Win+4GB显卡本地部署笔记
  • 青翼科技自研2路250MSPS DA回放FMC子卡模块
  • 硬件产品经理:从入门到精通(新书发布)
  • Opencv-C++笔记 (17) : 模板匹配
  • Maven(四)常用命令大全
  • 13.3 目标检测和边界框
  • TCP/IP网络江湖初探:物理层的奥秘与传承(物理层上篇-基础与本质)
  • 计算机视觉五大核心研究任务全解:分类识别、检测分割、人体分析、三维视觉、视频分析
  • linux -- centos -- cmake 留坑
  • 【100天精通python】Day33:使用python操作数据库_SQLite数据库的使用与实战
  • 通过将信号频谱与噪声频谱进行比较,自动检测适当的带通滤波器转折频率研究(Matlab代码实现)
  • 【Sklearn】基于多层感知器算法的数据分类预测(Excel可直接替换数据)