MFC我想遍历某个文件夹的所有文件并获取文件大小,再把它们加起来

voidCDlgSort::RefreshDataTemp(CStringstrDir){ULONGLONGsize;ULONGLONGSize=0;if(strDir=... void CDlgSort::RefreshDataTemp(CString strDir)
{
ULONGLONG size;
ULONGLONG Size = 0;
if(strDir == _T(""))
{
return;
}
else
{
if(strDir.Right(1) != _T("//"))
strDir += L"//";
strDir =strDir+_T("*.*");
}
CFileFind finder;
CString strPath;
BOOL bWorking = finder.FindFile(strDir);
while(bWorking)
{
bWorking = finder.FindNextFile();
strPath = finder.GetFilePath();
if(finder.IsDirectory() && !finder.IsDots())
{
RefreshDataTemp(strPath);} //递归调用
if(!finder.IsDirectory() && !finder.IsDots())
{
size = finder.GetLength();
Size = Size + size;
}

}CString tr;
tr.Format(_T("%I64uMB"), Size/1024/1024);
SetDlgItemText(IDC_EDIT1,tr);

}

为什么它并没有深入到文件夹中的文件夹,只获得了当前目录下的文件的大小
展开
 我来答
bhtzu
2015-08-20 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4248万
展开全部
RefreshDataTemp(strPath);} //递归调用

这里你也写了,是递归调用,那么也就是子目录的统计,是在另一个(同名)函数调用中完成的,而size和Size都是局部变量,不会传递到上一层函数调用。
解决方法:Size 作为返值或全局变量,tr的三行语句放在这个函数之外,不参与递归。
追问
为什么文件夹大小显示了一个固定的特别大的值。。。初学者,,求讲的详细一点,,这个是递归调用的自己
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式