分享

QT中读取目录以及读取文件大小

 tianht 2015-05-12
#include
#include

using namespace std;

qint64 du(const QString &path)
{
QDir dir(path);
qint64 size = 0;
// dir.entryInfoList(QDir::Files)返回文件信息
foreach (QFileInfo fileInfo, dir.entryInfoList(QDir::Files))
//计算文件大小
size += fileInfo.size();
// dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot)返回所有子目录,并进行过滤
foreach (QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
//若存在子目录,则递归调用du函数
size += du(path + QDir::separator() + subDir);
char unit = 'B';
quint64 curSize = size;
if(curSize > 1024) {
curSize /= 1024;
unit = 'K';
if(curSize > 1024) {
curSize /= 1024;
unit = 'M';
if(curSize > 1024) {
curSize /= 1024;
unit = 'G';
}
}
}
cout << curSize << unit << "\t" << qPrintable(path) << endl;
return size;

int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QStringList args = app.arguments();
QString path;
if (args.count() > 1)
//如果命令行提供了路径,则使用此路径
path = args[1];
else
//如果没有提供路径的话,则使用系统当前路径
path = QDir::currentPath();
du(path);
return 0;
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多