最近在项目当中需要实现转存软件媒体目录功能,在实现此功能时,需要判断所选取的盘是否拥有足够空间大小来存储目标目录,因此就需要对比目标目录size和所选盘符剩余空间。在此记录我用于获取目标目录size的功能。
实现比较简单,首选我们获取到目标文件夹时,通过递归的方式获取到目标文件夹下所有的文件和目录,针对里面的文件进行计算其size,总和即目标目录的size。
unsigned int SettingView::CurrentFolderSize(QString path)
{
QFileInfo info(path);
unsigned int ret = 0; //存放文件size
if( info.isFile() ) // 是文件获取文件的大小
{
ret = info.size();
}
if(info.isDir()) //是文件夹
{
QDir dir(path);
QFileInfoList list = dir.entryInfoList(); //获取该目录下所有文件和目录
for(int i=0; i<list.count(); i++)
{
if( (list[i].fileName() != ".") && (list[i].fileName() != "..") ) // 排除.和..目录
{
//qDebug() << list[i].fileName();
ret += CurrentFolderSize(list[i].absoluteFilePath());//递归计算
}
}
}
return ret;
}