Qt實(shí)現(xiàn)獲取文件大小與磁盤空間大小
1.通過(guò)QFile獲取文件大小
注意:返回的是字節(jié)個(gè)數(shù)
QFile file("E:/59.raw"); if (file.open(QIODevice::ReadOnly)) { qDebug() << file.size();// byte } else { qDebug() << "文件打開(kāi)失敗!"; }
通過(guò)QFileInfo獲取文件大小
QFileInfo info("E:/55.raw"); if (info.exists()) { qDebug() << info.size(); } else { qDebug() << "文件路徑不存在!"; }
2. 獲取磁盤空間
/** * @brief getDiskSpace 獲取盤符的容量 * @param flag 為true則求磁盤總?cè)萘浚瑸閒alse則求磁盤剩余容量 * @return 返回容量,MB為單位 */ qint64 getDiskSpace(QString path, bool flag) { qint64 res = 0; QList<QStorageInfo> storageInfoList = QStorageInfo::mountedVolumes(); foreach (QStorageInfo storageInfo, storageInfoList) { if(path.startsWith(storageInfo.rootPath())){ if(flag){ res = storageInfo.bytesTotal()/1024/1024 ; }else{ res = storageInfo.bytesAvailable()/1024/1024 ; } break; } } return res; }
3 .獲取選擇路徑下總文件大小
/** * @brief 獲取路徑下的文件大小:MB * @param filePath * @return */ qint64 getDirSizeMB(const QString filePath){ qint64 size = getDirSize(filePath); return size/MB; } /** * @brief 獲取路徑的文件大小:字節(jié) * @param filePath * @return */ qint64 getDirSize(const QString filePath) { QDir tmpDir(filePath); qint64 size = 0; /*獲取文件列表 統(tǒng)計(jì)文件大小*/ foreach(QFileInfo fileInfo, tmpDir.entryInfoList(QDir::Files)) { size += fileInfo.size(); } /*獲取文件夾 并且過(guò)濾掉.和..文件夾 統(tǒng)計(jì)各個(gè)文件夾的文件大小 */ foreach(QString subDir, tmpDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)) { size += getDirSize(filePath + QDir::separator() + subDir); //遞歸進(jìn)行 統(tǒng)計(jì)所有子目錄 } return size; }
4. 轉(zhuǎn)換大小單位
bit === byte
bit / 8
byte === KB
byte / 1024
KB = MB
KB / 1024
MB = GB
MB / 1024
GB === TB
GB / 1024
到此這篇關(guān)于Qt實(shí)現(xiàn)獲取文件大小與磁盤空間大小的文章就介紹到這了,更多相關(guān)Qt獲取文件與磁盤空間大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從匯編看c++的默認(rèn)析構(gòu)函數(shù)的使用詳解
本篇文章是對(duì)c++中默認(rèn)析構(gòu)函數(shù)的使用進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下2013-05-05c/c++ 標(biāo)準(zhǔn)庫(kù) bind 函數(shù)詳解
bind是一組用于函數(shù)綁定的模板。在對(duì)某個(gè)函數(shù)進(jìn)行綁定時(shí),可以指定部分參數(shù)或全部參數(shù),也可以不指定任何參數(shù),還可以調(diào)整各個(gè)參數(shù)間的順序。這篇文章主要介紹了c/c++ 標(biāo)準(zhǔn)庫(kù) bind 函數(shù) ,需要的朋友可以參考下2018-09-09使用Cline+deepseek實(shí)現(xiàn)VsCode自動(dòng)化編程
Cline是一個(gè)免費(fèi)且強(qiáng)大的VSCode插件,可以接入多種大模型API進(jìn)行對(duì)話式編程,本文主要介紹了使用Cline+deepseek實(shí)現(xiàn)VsCode自動(dòng)化編程,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01C++計(jì)算ICMP頭的校驗(yàn)和實(shí)例
這篇文章主要介紹了C++計(jì)算ICMP頭的校驗(yàn)和的方法,代碼簡(jiǎn)單實(shí)用,對(duì)于校驗(yàn)ICMP報(bào)文來(lái)說(shuō)有不錯(cuò)的實(shí)用價(jià)值,需要的朋友可以參考下2014-10-10C++保存txt文件實(shí)現(xiàn)方法代碼實(shí)例
這篇文章主要介紹了C++保存txt文件實(shí)現(xiàn)方法代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11關(guān)于虛函數(shù)實(shí)現(xiàn)多態(tài)的原理及分析
這篇文章主要介紹了C++中如何實(shí)現(xiàn)多態(tài)問(wèn)題,具有很好的參考價(jià)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02