close

花了一點時間寫出這個小function, 覺得結構挺好用的, 貼出來分享留存一下

qint64 SCAN_Size(QString source) //帶入的source即為資料夾路徑名稱
{
    QDir        srcDir( source );
    QStringList string;
    qint64      countSize = 0;
    string <<"*";
    QFileInfoList list = srcDir.entryInfoList(string,
                                              QDir::Dirs | QDir::NoDotAndDotDot,
                                              QDir::Name | QDir::Reversed);
    if(list.count() > 0)
    {
        // still in folders list
        for(int i = 0; i < list.count(); i++)
        {
            qDebug()<<__LINE__<<": List("<<i<<") : "<<list.at(i).fileName();
            countSize = countSize +
                    SCAN_Size(source + "/" + list.at(i).fileName());
            qDebug()<<"Count size :"<<QString::number(countSize)<<"bytes";
        }
        return countSize;
    }
    else
    {
        // already in device folder
        QString     SrcFilePath;
        QStringList     name_filters, filesListInSrcDir;
        name_filters << "*.jpeg"<<  //過濾出所有想要蒐集的副檔名稱
                        "*.JPEG"<<
                        "*.jpg" <<
                        "*.JPG" <<
                        "*.AVI" <<
                        "*.avi" <<
                        "*.mp4" <<
                        "*.MP4";
        filesListInSrcDir = srcDir.entryList( name_filters,
                                              QDir::Files | QDir::Readable,
                                              QDir::Name | QDir::Reversed);
        name_filters.clear();
        unsigned int    FileIndex = 0;
        unsigned int    CopyFilesNum = filesListInSrcDir.count();
        while(FileIndex < CopyFilesNum)
        {
            SrcFilePath.clear();
            SrcFilePath = source + "/" + filesListInSrcDir.at(FileIndex);
            //countSize = countSize + QFileInfo(SrcFilePath).size();
            countSize = countSize + QFileInfo(SrcFilePath).size();
            FileIndex++;
        }
        //qDebug()<<"      Files size :"<<QString::number(countSize)<<"bytes";
        return countSize;
    }
}

arrow
arrow

    lynn770707 發表在 痞客邦 留言(0) 人氣()