Facebook
From Soft Dolphin, 9 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 594
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <boost/filesystem.hpp>
  4. #include <cmath>
  5.  
  6. using namespace std;
  7. namespace fs=boost::filesystem;
  8.  
  9.  
  10.  
  11. class Element
  12. {
  13.         protected:
  14.         fs::path sciezka;
  15.         public:
  16.                 double rozmiar;
  17.                 Element(){}
  18.                 Element(fs::path sc):sciezka(sc){}
  19.                 fs::path Sciezka(){return sciezka;}
  20.                 virtual double Rozmiar() =0;
  21. };
  22.  
  23. class Plik : public Element{
  24.         private :
  25.         double  rozmiar;
  26.                 public:
  27.                 Plik():Element(), rozmiar(0.0){}
  28.                 Plik(fs::path s):Element(s){}
  29.                
  30.                 double Rozmiar(){
  31.                        
  32.                         rozmiar = fs::file_size(Sciezka());
  33.                         return rozmiar;
  34.                 }
  35.                
  36.         void wyswietl(){
  37.                 cout<<Sciezka().string()<<endl;
  38.         }
  39.                                
  40. };
  41.  
  42. class Katalog : public Element{
  43.         private:
  44.         double rozmiar;
  45.         vector<Element*>elements;
  46.         public:
  47.         Katalog():Element(),rozmiar(0.0){}
  48.         Katalog(fs::path s):Element(s),rozmiar(0.0){}
  49.        
  50.         double Rozmiar(){
  51.         //      rozmiar=fs::file_size(Sciezka());
  52.                
  53.         for(fs::directory_iterator iter(sciezka); iter!= fs::directory_iterator(); ++iter)
  54.         {
  55.                 Element* element;
  56.                 if(is_directory(*iter))
  57.                         element = new Katalog(*iter);
  58.                 else
  59.                         element = new Plik(*iter);
  60.                         elements.push_back(element);
  61.         }
  62.        
  63.         for(vector<Element*>::iterator iter = elements.begin();iter!= elements.end(); ++ iter)
  64.                 rozmiar += (*iter)->Rozmiar();
  65.                
  66.                         return rozmiar;
  67.         }
  68.                
  69. };
  70.  
  71.  
  72. int main(){
  73.        
  74. //      vector<Element*>elementy;
  75.         fs::path path ="./";
  76.         Katalog *file = new Katalog(path);
  77.         cout<<file->Rozmiar()<<endl;
  78.        
  79.        
  80.        
  81.        
  82. return 0;
  83. }
  84.