设置界面 计算本地内存剩余量是否足够保存一个60s的视频

一、计算出指定目录及其子目录文件的大小

qint64 SetWin::FileSize(const QString &path)    //参数路径
{
QDir dir(path);
qint64 size=0;
foreach (QFileInfo fileInfo,dir.entryInfoList(QDir::Files))
size+=fileInfo.size();
foreach (QString subDir,dir.entryList(QDir::Dirs |QDir::NoDotAndDotDot))
size+=FileSize(path+QDir::separator()+subDir);//递归调用函数,计算全部大小

//接下来是换算单位 size原本的单位是‘B’   根据计算 换算成 'M','K','G',但是我只需要以B为单位的size 所以此处屏蔽这段代码
/*
char unit='B';
quint64 cursize=size;
if(cursize>1024)
{
cursize /=1024;
unit='K';
if(cursize>1024)
{
cursize /=1024;
unit='M';
if(cursize>1024)
{
cursize /=1024;
unit='G';
}
}
}*/
//cout<<cursize<<unit<<"\t"<<qPrintable(path)<<endl;
//qDebug()<<cursize<<unit<<"\t"<<qPrintable(path)<<endl;
return size;
}

二、计算输入的内存量 - 计算得到的文件夹大小 判断是否大于一个视频所需要的内存量

假设一个视频 60s ,大概是28MB。同一换算成‘B’单位,然后进行加减计算。

//参数1 文件夹大小目前的大小 ;参数2 界面用户输入的内存值,单位是'G'

bool SetWin::CompareSize(qint64 Bsize, qint64 inputSize)
{
qint64 c_inputSize=inputSize*1024*1024*1024;        //'G'单位换成‘B’
//假设一个视频60秒 大约28Mb
if((c_inputSize-Bsize)>=28*1024*1024)                //'M'单位换成‘B’
{
return true;//说明内存足够 可以继续联网
}
else {
return false;
}
}

 

 

 

三、思路发展

一开始一直想的是吧读取到的文件大小,转成各种单位的数据,但是一个函数只能有一个返回值,不能连单位一起返回出函数,那么经过函数一得到的数据就没有单位了,无法和用户输入的内存大小进行比较。

所以 就把用户输入的值 固定的G单位切换成‘B’单位 同一换算成一个单位,再进行比对

posted @   代码改变世界11  阅读(214)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
点击右上角即可分享
微信分享提示