#include <QtGui>
#include <iostream>
qlonglong imageSpace(const QString &path)
{
QDir dir(path);
qlonglong size = 0;
QStringList filters;
foreach (QByteArray format, QImageReader::supportedImageFormats()) //设置过滤器,把所有Qt能够识别的图片格式提取出来
filters += "*." + format;
foreach (QString file, dir.entryList(filters, QDir::Files)) //用过滤器找到当前目录下的图片文件
size += QFileInfo(dir, file).size(); //进行累加
foreach (QString subDir, dir.entryList(QDir::Dirs
| QDir::NoDotAndDotDot)) //不包括.和..目录
size += imageSpace(path + QDir::separator() + subDir); //子目录进行递归
return size;
}
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QStringList args = QCoreApplication::arguments();
QString path = QDir::currentPath();
if (args.count() > 1)
path = args[1];
std::cout << "Space used by images in " << qPrintable(path)
<< " and its subdirectories is "
<< (imageSpace(path) / 1024) << " KB" << std::endl;
return 0;
}