CSDN话题挑战赛第2期
参赛话题:学习笔记
欢迎小伙伴的点评✨✨,相互学习c/c++应用开发。🍳🍳🍳
博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩🚀
本章节会给大家带来Qt5 文件及磁盘处理—— 文件大小及路径获取实例详解。
QDir 类具有存取目录结构和内容的能力,使用它可以操作目录、存取目录或文件信息、操
作底层文件系统,而且还可以存取 Qt 的资源文件。
Qt 使用 “/” 作为通用的目录分隔符和 URL 路径分隔符。如果在程序中使用 “/” 作为目录
分隔符, Qt 会将其自动转换为符合底层操作系统的分隔符(如 Linux 使用 “/”, Windows 使用“ \ ”)。
QDir 可以使用相对路径或绝对路径指向一个文件。 isRelative()和 isAbsolute() 函数可以判断
QDir 对象使用的是相对路径还是绝对路径。如果需要将一个相对路径转换为绝对路径,则使用
makeAbsolute() 函数。
目录的路径可以通过 path() 函数返回,通过 setPath() 函数设置新路径。绝对路径使用
absolutePath() 函数返回,目录名可以使用 dirName() 函数获得,它通常返回绝对路径中的最后一
个元素,如果 QDir 指向当前目录,则返回"."。目录的路径可以通过 cd()和 cdUp() 函数改变。
可以使用 mkdir()函数创建目录,使用 rename()函数改变目录名。
判断目录是否存在可以使用 exists()函数,目录的属性可以使用 isReadable() 、 isAbsolute() 、
isRelative()和 isRoot() 函数来获取。目录下有很多条目,包括文件、目录和符号连接,总的条目
数可以使用 count()函数来统计。 entryList()函数返回目录下所有条目组成的字符串链表。可以使
用 remove() 函数删除文件,使用 rmdir()函数删除目录。
图一
#include
#include
#include
#include
qint64 du(const QString &path)
{
QDir dir (path);
qint64 size= 0;
foreach(QFileInfo fileInfo,dir.entryInfoList(QDir::Files))
{
size += fileInfo.size (); //获取第一个dir文件夹内的占用空间
}
foreach(QString subDir,dir.entryList(QDir::Dirs|QDir::NoDotAndDotDot))
{
size+= du(path+QDir::separator()+subDir); /*循环获得dir后获取的文件*/
}
char unit ='B'; /*记录数据的大小从B,K,M
qint64 curSize=size;
if(curSize>1024)
{
curSize/=1024;
unit ='K';
if (curSize>1024)
{
curSize/=1024;
unit ='M';
if(curSize>1024)
{
curSize/=1024;
unit ='G';
}
}
}
qDebug () <<curSize<<unit<<"\t"<<qPrintable (path) <<endl;
return size;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QStringList args = a.arguments(); //获取路径
QString path;
if (args .count() >1)
{
path= args[1];
}
else
{
path = QDir::currentPath () ;
}
qDebug()<<path<<endl;
du(path); //调用函数将路径上的文件夹输出到控制台
return a.exec();
}
Qt5 文件及磁盘处理—— 文件大小及路径获取会在应用程序开发中经常用到的。