QT 计算文件夹总大小并转换为B、KB、M、G. 获取磁盘总大小、可用空间、文件夹大小
qt获取磁盘总大小、可用空间、文件夹大小 (**)使用QFileInfo查看文件相关信息----大小,创建时间,属性 (**)
目录
qt获取磁盘总大小、可用空间、文件夹大小 (**)
使用QFileInfo查看文件相关信息----大小,创建时间,属性 (**)
QT 计算文件夹总大小并转换为B、KB、M、G
Qt - 将int转换为文件大小格式(KB,MB或GB)的最简单方法? (**)
Qt 之 获取文件大小
QT读取文件夹大小
===============================================
Qt - 将int转换为文件大小格式(KB,MB或GB)的最简单方法?
QFileInfo没有一个具体方法为,但here你可以找到一个简单的实现子类QFileInfo和实施这种新方法
QString QFileInfoHumanSize::size_human()
{
float num = this->size();
QStringList list;
list << "KB" << "MB" << "GB" << "TB";
QStringListIterator i(list);
QString unit("bytes");
while(num >= 1024.0 && i.hasNext())
{
unit = i.next();
num /= 1024.0;
}
/// orignal :: return QString().setNum(num,'f',2)+" "+unit;
return QString::number(num,'f',2)+" "+unit; // update to this
}
return QString::number(num,'f',2)+" "+unit; // update to this
使用QFileInfo查看文件相关信息----大小,创建时间,属性
QString file = "E:/workspace/Data/ColorTransfer.txt";
QFileInfo info(file);
qint64 size = info.size();//文件大小,单位byte
QDateTime created = info.created();//创建时间
QDateTime lastModified = info.lastModified();//最后修改时间
QDateTime lastRead = info.lastRead();//最后读取时间
qDebug() << size;
qDebug() << created;
qDebug() << lastModified;
qDebug() << lastRead;
bool isDir = info.isDir();//是否是目录
bool isFile = info.isFile();//是否是文件
bool isSymLink = info.isSymLink();//是否是符号链接
bool isHidden = info.isHidden();//是否隐藏
bool isReadable = info.isReadable();//是否可读
bool isWritable = info.isWritable();//是否可写
bool isExecutable = info.isExecutable();//是否是可执行文件
qDebug() << isDir<< isFile<< isSymLink<< isHidden<<
isReadable<< isWritable<< isExecutable;
https://blog.csdn.net/yuxing55555/article/details/75195825
QT读取文件夹大小
转自QT读取文件夹大小_qt 判断qdir容量大小_战神无悔的博客-CSDN博客
根据文件夹路径,得到子文件及子文件夹信息,递归调用获得所有子文件大小并累加。
代码比较简单,这里强调一点:遍历所有子目录时,必须注明QDir::NoDotAndDotDot。原因是子目录中也包含.(本目录)和..(上一级目录)。假如不排除以上两个目录,可能会导致一系列(严重)错误。
quint64 MessagesWidget::dirFileSize(const QString &path)
{
QDir dir(path);
quint64 size = 0;
//dir.entryInfoList(QDir::Files)返回文件信息
foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::Files))
{
//计算文件大小
size += fileInfo.size();
}
//dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot)返回所有子目录,并进行过滤
foreach(QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
//若存在子目录,则递归调用dirFileSize()函数
size += dirFileSize(path + QDir::separator() + subDir);
}
return size;
}
---------------------
作者:战神无悔
来源:CSDN
原文:https://blog.csdn.net/u011915578/article/details/48526035
版权声明:本文为博主原创文章,转载请附上博文链接!
QT 计算文件夹总大小并转换为B、KB、M、G
一、计算文件夹总大小
qint64 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);
}return size;
}
二、转换大小单位
QString change(const qint64 &size)
{
int integer = 0; //整数位
int decimal = 0; //小数位,保留三位
char unit ='B';
qint64 standardSize = size;
qint64 curSize = size;if(standardSize > 1024) {
curSize = standardSize * 1000;
curSize /= 1024;
integer = curSize / 1000;
decimal = curSize % 1000;
standardSize /= 1024;
unit = 'K';
if(standardSize > 1024) {
curSize = standardSize * 1000;
curSize /= 1024;
integer = curSize / 1000;
decimal = curSize % 1000;
standardSize /= 1024;
unit = 'M';
if(standardSize > 1024) {
curSize = standardSize * 1000;
curSize /= 1024;
integer = curSize / 1000;
decimal = curSize % 1000;
unit = 'G';
}
}
}QString dec = "0";
if (0 <= decimal && decimal <= 9) {
dec = dec + dec + QString::number(decimal);
}if (10 <= decimal && decimal <= 99) {
dec = "0" + QString::number(decimal);
}if (100 <= decimal && decimal <= 999) {
dec = QString::number(decimal);
}return QString::number(integer) + "." + dec + unit;
}
————————————————
版权声明:本文为CSDN博主「daboluo520」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guorong520/article/details/105774217
Qt 之 获取文件大小
方式一:通过QFileInfo获取文件大小
QFileInfo info("C:\\Users\\lenovo\\Desktop\\测试.txt");
if (info.exists()) {
qDebug() << info.size();
} else {
qDebug() << "文件路径不存在!";
}
方式二:通过QFile获取文件大小
QFile file("C:\\Users\\lenovo\\Desktop\\测试.txt");
if (file.open(QIODevice::ReadOnly)) {
qDebug() << file.size();
} else {
qDebug() << "文件打开失败!";
}
————————————————
版权声明:本文为CSDN博主「莫成」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42312563/article/details/116013613
QT开发之获取文件大小
获取一个音频文件大小(字节)
long int size = 0;
QFile myFile(User_wav_path[0]);
if (myFile.open(QIODevice::ReadOnly))
{
size = myFile.size(); //when file does open.
myFile.close();
}
qDebug() << size;
后续如果能获取、采样率、声道数、采样位数就可以算出音频文件的时长
————————————————
版权声明:本文为CSDN博主「大树学长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bigtree_mfc/article/details/108626123
qt获取磁盘总大小、可用空间、文件夹大小
项目场景:
qt项目中存在大文件导出的场景,需要在导出前需要判断选择的目录的剩余空间大小是否符合要求。因此需要获取选择文件夹的可用空间和导出文件夹的大小。
获取磁盘空间
工具类下载,实现代码如下:
/**
* @brief getDiskSpace 获取盘符的容量
* @param path 路径(例如"C\")
* @param flag 为true则求磁盘总容量,为false则求磁盘剩余容量
* @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()/MB;
}else{
res = storageInfo.bytesAvailable()/MB;
}break;
}
}return res;
}
获取选择路径下总文件大小
工具类下载,实现代码如下:
/**
* @brief 获取路径下的文件大小:MB
* @param filePath
* @return
*/
qint64 getDirSizeMB(const QString filePath){
qint64 size = getDirSize(filePath);
return size/MB;
}/**
* @brief 获取路径的文件大小:字节
* @param filePath
* @return
*/
qint64 getDirSize(const QString filePath)
{
QDir tmpDir(filePath);qint64 size = 0;
/*获取文件列表 统计文件大小*/
foreach(QFileInfo fileInfo, tmpDir.entryInfoList(QDir::Files))
{
size += fileInfo.size();
}/*获取文件夹 并且过滤掉.和..文件夹 统计各个文件夹的文件大小 */
foreach(QString subDir, tmpDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
size += getDirSize(filePath + QDir::separator() + subDir); //递归进行 统计所有子目录
}return size;
}
————————————————
版权声明:本文为CSDN博主「九零B壹」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010000915/article/details/130500685

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)