引言

与数据文件有关的应用软件一般都会有硬盘检测与文件清理的功能。
本文代码实现在Linux系统下使用Qt编写的硬盘监测与文件清理模块。

代码之路

当内存占比大于85%时,会进行文件的删除,保留最新的半年来的文件。
内存监测部分的实现,是定期执行Linux的shell命令(df -k);
文件删除比较简单,使用QDir::entryInfoList函数与QFileInfo函数的配合。
废话不说,直接上代码。
硬盘空间监测函数:

bool SysResource::get_disk_space()
{QProcess process;process.start("df -k");process.waitForFinished();process.readLine();while(!process.atEnd()){QString str = process.readLine();if (str.startsWith("/dev/root")){str.replace("\n", "");str = str.simplified();auto lst = str.split(" ");if (lst.size() > 5){QString tmpPercent = lst[4].toString();QString PercentStr = tmpPercent.left(tmpPercent.size() - 1);int PercentInt = QString::number(PercentStr);if (PercentInt > 85){qDebug() << "Memery used percent is:" << tmpPercent <<", start Delete files";return false;}}}}return true;
}

文件清理函数,是一个定时器的槽函数:

void SysResource::OnDataRemove()
{if (get_disk_space()){return;}QDir dir("xxx");dir.setFilter(QDir::Files|QDir::NoSymLinks|QDir::NoDotAndDotDot);dir.setSorting(QDir::Time);QFileInfoList fileList = dir.entryInfoList();int fileNum = fileList.size();if (fileList.size() > 180) //180天--1天一个文件{for (int i = 180; i < fileNum; i++){QFileInfo fileInfo = fileList.at(i);fileInfo.dir().remove(fileInfo.fileName());}}
}

总结

硬盘空间检测和文件清理的功能实现比较像软件的日志模块,需求简单的话代码量非常少,但是要求比较高的话就不容易实现了。文章分享一个简单需求的实现,对复杂要求还是很有借鉴意义的。

Qt实现Linux下的硬盘空间监测和文件清理相关推荐

  1. Linux下显示硬盘空间的两个命令

    1.df -h ,用于显示目前所有文件系统的可用空间及使用情况,示例如下: [root@msg45 ~]# df -h Filesystem                    Size  Used ...

  2. linux下查找占空间大的文件,Linux中查找当前目录下占用空间最大的前10个文件

    du命令 计算出单个文件或者文件夹的磁盘空间占用 -a或--all:包含全部的文件系统: --block-size=:以指定的区块大小来显示区块数目: -h或--human-readable:以可读性 ...

  3. 固态硬盘对于linux提升,对提升Linux下固态硬盘使用率的探讨

    固态硬盘(SSD)不是普通的硬盘.文件在固态硬盘中的处理方式与地普通硬盘中的方式完全不同,如果安装Linux不同版本时没有把这些差异考虑进去,就很难充分发挥固态硬盘的优势,而且很可能在使用一段时间后造 ...

  4. linux下的磁盘配额简介暨 linux下加挂硬盘续

    linux下的磁盘配额简介暨 linux下加挂硬盘续 实验环境 VMware 6.5.2 +redhat Enterprise 5 as 以上是内核版本,还有方便起见加挂一块硬盘 这只是我的环境 实验 ...

  5. Linux 下固态硬盘恢复误删除文件

    首发地址:学习日记 Linux 下固态硬盘恢复误删除文件 – 学习日记 上次分享了一则Linux下恢复误删除文件的视频,有朋友在视频下方询问是否机械硬盘,由此引出今天这则Linux下固态硬盘恢复误删除 ...

  6. u盘linux需要多大内存,linux下获取硬盘、内存、U盘大小及使用大小

    /* * 获取硬盘大小;内存大小;usb大小 */ #ifndef SYSINFOGET_H #define SYSINFOGET_H #include //磁盘信息 #include #includ ...

  7. 如何查看linux的分区类型,linux 下查看硬盘分区类型

    可以用  df 这个命令 具体 要 man df  仔细看看 实例 [root@localhost mnt]# df -Th 文件系统    类型      容量  已用  可用 已用% 挂载点 /d ...

  8. 在linux中hdparm作用,Linux下hdparm硬盘测速

    在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息.这样你就知道了硬盘读写速度. Hdparm功能说明:显示与设定硬盘的参数. 语 法:hdparm [-CfghiIqtTvyYZ ...

  9. linux 下检查硬盘坏道/扇区

    http://zhidao.baidu.com/question/238047105.html http://zhangwenxin82.blog.163.com/blog/static/114595 ...

最新文章

  1. Linux echo 显示内容颜色
  2. SQL SERVER 2005 同步复制技术 发布与订阅功能使用说明
  3. Linq to Sql : 三种事务处理方式
  4. ListView中convertView和ViewHolder的工作原理
  5. qtextedit 默认文案_QTextEdit的paste
  6. Linux技术网站中文,Linux技术网站,putty工具,中文显示设置
  7. 主机管理+堡垒机系统开发:前端批量命令结果(十二)
  8. Hibernate学习资源
  9. 【转】Java多线程面试问题集锦
  10. C语言编程入门——程序练习(下)
  11. oracle服务商前几名,oracle厂商服务有哪几种
  12. [宋史学习] 取蜀将帅不利
  13. java游戏管理器 闪退_手游频繁崩溃”闪退”? 从程序上找原因
  14. 【CSS】CSS中alt属性和title属性用法
  15. stm32USB之模拟U盘
  16. 北京大学可视化发展前沿暑期学校第四讲
  17. LTE下行传输机制——PHICH信道
  18. 华为 AISC 研究型实习生招聘~北京 or 深圳
  19. 打击侵犯个人信息犯罪,推动信息保护立法
  20. MATLAB基本常识

热门文章

  1. oracle在linux自启动和停止脚本
  2. python幂函数无序分布_Python:从幂律分布中生成随机数
  3. 南卫理公会大学计算机科学,南卫理公会大学计算机科学与工程硕士
  4. Lync Server 2010 安装指南
  5. Shadowing, Overriding, Hiding and Obscuring
  6. 计算机网络(五)—— 运输层(8):TCP的连接建立和连接释放
  7. Win7任务栏相关设置
  8. 操作 Windows7 任务栏的快捷方式
  9. 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
  10. 马斯克被曝摆架子/ 朱晓彤卸任特斯拉中国法人/ 苹果M2Pro首发台积电3nm...今日更多新鲜事在此...