DirObject.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // DirObject.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "DirObject.h"
  5. #include "FileObject.h"
  6. // CDirObject
  7. IMPLEMENT_DYNAMIC(CDirObject, CBaseObject)
  8. CDirObject::CDirObject(const CString& dirPath)
  9. : CBaseObject(dirPath)
  10. {
  11. CFileFind fileFind;
  12. BOOL bWorking = fileFind.FindFile(dirPath+_T("\\*.*"));
  13. while (bWorking)
  14. {
  15. bWorking = fileFind.FindNextFile();
  16. if (fileFind.IsDots())
  17. continue;
  18. if (fileFind.IsDirectory())
  19. {
  20. CDirObject* pDirObject = new CDirObject(fileFind.GetFilePath());
  21. m_dirArray.Add(pDirObject);
  22. }
  23. else
  24. {
  25. CFileObject* pFileObject = new CFileObject(fileFind.GetFilePath());
  26. m_fileArray.Add(pFileObject);
  27. }
  28. }
  29. }
  30. CDirObject::~CDirObject()
  31. {
  32. INT_PTR dirCount = m_dirArray.GetSize();//m_dirArray.GetCount();
  33. for (INT_PTR dirIndex = 0; dirIndex < dirCount; dirIndex++)
  34. delete m_dirArray.GetAt(dirIndex);
  35. INT_PTR fileCount = m_fileArray.GetSize();//m_fileArray.GetCount();
  36. for (INT_PTR fileIndex = 0; fileIndex < fileCount; fileIndex++)
  37. delete m_fileArray.GetAt(fileIndex);
  38. }
  39. // CDirObject member functions
  40. ULONGLONG CDirObject::GetSizeOnDisc()
  41. {
  42. ULONGLONG sectorSize = 0;
  43. INT_PTR dirCount = m_dirArray.GetSize();//m_dirArray.GetCount();
  44. for (INT_PTR dirIndex = 0; dirIndex < dirCount; dirIndex++)
  45. sectorSize += m_dirArray.GetAt(dirIndex)->GetSizeOnDisc();
  46. INT_PTR fileCount = m_fileArray.GetSize();//m_fileArray.GetCount();
  47. for (INT_PTR fileIndex = 0; fileIndex < fileCount; fileIndex++)
  48. sectorSize += m_fileArray.GetAt(fileIndex)->GetSizeOnDisc();
  49. return sectorSize;
  50. }