Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tworzenie nowego folderu

Ostatnio zmodyfikowano 2012-06-18 20:20
Autor Wiadomość
kubawal
Temat założony przez niniejszego użytkownika
Tworzenie nowego folderu
» 2012-06-18 16:53:49
Witam!
Ciekawi mnie, jak można przy tworzeniu pliku utworzyć nowy folder?
Za pomocą fstream można utworzyć pliki tylko w istniejących folderach.
P-58639
xevuel
» 2012-06-18 16:57:27
P-58641
pekfos
» 2012-06-18 16:57:56
mkdir() z POSIX, CreateDirectory() z WinAPI, itd.
P-58642
Admixior
» 2012-06-18 20:20:35
Kiedyś napisałem takie 2 funkcje rozwiązujące ten problem. Cofają się one w katalogach dopóki nie będzie istniejącego odpowiedniego, po czym tworzy wszystkie potrzebne żeby utworzyć plik.
Funkcja "utwórz_ścieżkę"  tworzy wszystkie katalogi które są potrzebne żeby mogło się coś znaleźć(CreateDirectory).
Funkcja "utwórz_plik_zapisu"  tworzy plik we właściwym katalogu wywołując jak będzie potrzebna funkcje utwórz ścieżkę.
C/C++
int utworz_sciezke( string dest )
{
    SetLastError( 0 );
    CreateDirectoryA( dest.c_str(), 0 );
    if( GetLastError() != 0 )
    {
        if( GetLastError() == 3 )
        {
            if( utworz_sciezke( dest.substr( 0, dest.find_last_of( '\\' ) ) ) == 0 )
            {
                CreateDirectoryA( dest.c_str(), 0 );
                return GetLastError();
            }
            return GetLastError();
        }
        else return GetLastError();
       
    }
    else return 0;
   
}

int utworz_plik_zapisu( ofstream & plik, string dest )
{
    plik.open( dest, ios::out | ios::binary );
    if( !plik.good() )
    {
        if( GetLastError() == 3 )
        {
            SetLastError( 0 );
            int err;
            if(( err = utworz_sciezke( dest.substr( 0, dest.find_last_of( '\\' ) ) ) ) != 0 ) return err;
           
            plik.open( dest, ios::out | ios::binary );
            if( !plik.good() )
            {
                return GetLastError();
            }
        }
        else
        {
            return GetLastError();
        }
    }
    return 0;
}
P-58667
« 1 »
  Strona 1 z 1