说实话,我是为了混个持之以恒的标签的 = =,谁叫我过年都没怎么写呢!!!!
/** * 书本:【Qt5开发及实例】 * 功能:得到文件的大小和目录的路径 * 文件:main.cpp * 时间:2015年2月3日21:18:16 * 作者:cutter_point */ #include <QCoreApplication> #include <QStringList> #include <QDir> #include <QtDebug> //根据给的路径得到文件的大小和目录 qint64 du(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 += du(path + QDir::separator() + subDir); //递归调用,遍历所有目录,深度优先 } char unit = 'B'; qint64 curSize = size; //这个目录的大小 if(curSize > 1024) { //当前的大小比1024个字节还大,上面计数是按字节大小得到的fileInfo.size() curSize /= 1024; //除 unit = 'K'; //KB if(curSize > 1024) { //还大 curSize /= 1024; unit = 'M'; //MB if(curSize > 1024) { curSize /= 1024; unit = 'G'; //GB } //if } //if } //if 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; // path = "D:/Qt/5.1.0-rel-static"; // path = "E:/DNF"; // path = "E:/英雄联盟"; // path = "F:/传智播客Hibernate视频教程"; du(path); return a.exec(); }
原文地址:http://blog.csdn.net/cutter_point/article/details/43939005