Tworzenie za jednym zamachem "drzewka" folderów

0

Witam, czy wiecie jak stworzyć Od razu pare folderów(tzn np. "C:\nowy\nowy\nowy...") poprzez funkcje CreateDirectory() ? wiem jak to zrobić poprzez mkdir jednak potrzebuje funkcji która mi zwróci błąd w przypadku niepowodzenia

0

Utwórz sobie klasę, która będzie przechowywać nazwę folderu i listę podfolderów. Wystarczy, że konstruktorem stworzysz obiekt i wywołasz zaprogramowaną metodę do tego i jest pięknie. Wtedy wywołanie metody budującej drzewo katalogów będzie wywoływać również dla podrzędnych katalogów, co da możliwość utworzenia drzewa :)

Przykład:

#include <iostream>
#include <string>
#include <vector>
using namespace std;

void CreateDirectory(string s) { cout << s << endl; }

class Directory
{
    string name;
    vector<Directory*> innerDirs;
public:
    Directory(string n)
        : name(n)
    {
    }

    Directory* addSubdir(string name)
    {
        Directory *sub = new Directory(name);
        innerDirs.push_back(sub);
        return sub;
    }

    ~Directory(void)
    {
        for(int i = 0; i < innerDirs.size(); i++)
            delete innerDirs[i];
    }

    void buildTree(string path = "")
    {
        CreateDirectory(path + '/' + name);
        for(int i = 0; i < innerDirs.size(); i++)
            innerDirs[i]->buildTree(path + '/' + name);
    }
};

int main()
{
    Directory dir("main");
    Directory *d = dir.addSubdir("abc")->addSubdir("def");
    d->addSubdir("ghi");
    d->addSubdir("jkl");
    dir.addSubdir("ooo");
    dir.buildTree();
    return 0;
}

Wydruk:

/main
/main/abc
/main/abc/def
/main/abc/def/ghi
/main/abc/def/jkl
/main/ooo

1 użytkowników online, w tym zalogowanych: 0, gości: 1