为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C
胡子哥哥 2023-03-02 17:13:40
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);}
查看完整描述

1 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

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

查看完整回答
反对 回复 2023-03-06
  • 1 回答
  • 0 关注
  • 65 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信