猿问

为什么它并没有深入到文件夹中的文件夹,只获得了当前目录下的文件的大小

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);

}

胡子哥哥
浏览 66回答 1
1回答

呼唤远方

RefreshDataTemp(strPath);} //递归调用这里你也写了,是递归调用,那么也就是子目录的统计,是在另一个(同名)函数调用中完成的,而size和Size都是局部变量,不会传递到上一层函数调用。解决方法:Size 作为返值或全局变量,tr的三行语句放在这个函数之外,不参与递归。
随时随地看视频慕课网APP
我要回答