Qt實(shí)現(xiàn)獲取文件大小與磁盤(pá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. 獲取磁盤(pán)空間
/**
* @brief getDiskSpace 獲取盤(pán)符的容量
* @param flag 為true則求磁盤(pán)總?cè)萘?,為false則求磁盤(pán)剩余容量
* @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 獲取路徑下的文件大?。篗B
* @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)獲取文件大小與磁盤(pán)空間大小的文章就介紹到這了,更多相關(guān)Qt獲取文件與磁盤(pán)空間大小內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++中的數(shù)字轉(zhuǎn)字符串to_string
這篇文章主要介紹了C++中的數(shù)字轉(zhuǎn)字符串to_string,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11
C語(yǔ)言實(shí)現(xiàn)酒店管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)酒店管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06
基于C++中sprintf的錯(cuò)誤總結(jié)詳解
本篇文章是對(duì)C++中sprintf的錯(cuò)誤進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C語(yǔ)言小游戲之小熊跳板功能的實(shí)現(xiàn)
這篇文章主要介紹了C語(yǔ)言小游戲之小熊跳板功能的實(shí)現(xiàn),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
Qt?關(guān)于容器的遍歷迭代器的使用問(wèn)題小結(jié)
Qt是一個(gè)跨平臺(tái)的 C++ 開(kāi)發(fā)庫(kù),主要用來(lái)開(kāi)發(fā)圖形用戶界面程序,當(dāng)然也可以開(kāi)發(fā)不帶界面的命令行程序,本文重點(diǎn)給大家介紹Qt?關(guān)于容器的遍歷迭代器的使用問(wèn)題小結(jié),感興趣的朋友一起看看吧2022-03-03

