- #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();
- }
得到文件的大小和目录的路径(控制台应用程序)
最新推荐文章于 2024-02-26 20:24:27 发布