码迷,mamicode.com
首页 > 其他好文 > 详细

【Qt5开发及实例】26、得到文件的大小和目录的路径

时间:2015-02-26 10:07:02      阅读:451      评论:0      收藏:0      [点我收藏+]

标签:qt5   文件   大小   目录   路径   

说实话,我是为了混个持之以恒的标签的 = =,谁叫我过年都没怎么写呢!!!!


/**
* 书本:【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();
}

技术分享



【Qt5开发及实例】26、得到文件的大小和目录的路径

标签:qt5   文件   大小   目录   路径   

原文地址:http://blog.csdn.net/cutter_point/article/details/43939005

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!