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

Sprawdzanie czy istnieje folder

Ostatnio zmodyfikowano 2012-12-13 21:34
Autor Wiadomość
mostrom
Temat założony przez niniejszego użytkownika
Sprawdzanie czy istnieje folder
» 2012-12-12 22:19:02
Witam!

C/C++
struct stat st;
if( stat( "/katalog", & st ) == 0 )
     cout << "folder istnieje";
else { cout << "nie ma folderu"; exit( 0 ); }

Rozumiem, że powyższy kod działa tylko na poziomie katalogu w którym znajduje się program.
Jak sprawdzić poprawność całej ścieżki?

Obrałem algorytm sprawdzania poprawności ścieżki "od tyłu", aż do momentu kiedy program nie stwierdzi że ten katalog już istnieje. Czyli mamy ciąg
string path = "C:/Programy/Katalog/asdasd";
Program sprawdza najpierw czy istnieje asdasd, potem Katalog, potem Programy itd. Sprawdza dopóty, dopóki nie napotka istniejącego katalogu. Jednak nie umiem zrealizować tego algorytmu, bo nie umiem przenieść względności funkcji stat(). Macie jakiś sposób?

Dodam, że narazie pracuję na Windowsie
P-70858
jsc
» 2012-12-12 22:21:06
Nie lepiej trzasnąć z miejsca ścieżkę bezwzględną?
P-70859
Savail
» 2012-12-12 22:34:27
Najlepiej i najszybciej jest użyć gotowych bibliotek. Boost filesystem to chyba jedna z najlepszych w tych sprawach, jest także przenośna więc jej znajomość na pewno nie zaszkodzi :)
P-70860
akwes
» 2012-12-13 15:07:55
GetModuleFileName function (Windows) możesz użyć tej funkcji, aby od razu określić swoje położenie, nie musząc go sprawdzać.

Lub po polsku:
» WinAPIGetModuleFileName

Jeżeli bardzo Ci zależy na sprawdzeniu czy folder istnieje, możesz poszukać podobnej jak wyżej funkcji winapi lub skorzystać z:


funkcja access (const char * sciezka, int tryb); znajduje się w bibliotece unistd.h i przyjmuje dwa argumenty z czego pierwszy to ścieżka do katalogu bądź pliku który chcemy sprawdzić, a drugi to tryb czyli to co chcemy sprawdzić. W bibliotece unistd.h są zdefiniowane następujące tryby:
R_OK - test na możliwość odczytywania pliku
W_OK - test na możliwość zapisu pliku
E_OK - test na mozliwość wykonania pliku
i F_OK - test na to czy istnieje katalog lub plik
funckja access(sciezka, tryp); zwraca wartość typu integer i jeżeli wykona się poprawnie (czyli test zakończy się sukcesem) zwróci 0, a jeżeli niepoprawnie (czyli test się nie powiedzie) zwróci -1.

P-70879
mostrom
Temat założony przez niniejszego użytkownika
» 2012-12-13 21:34:03
Akwes, funkcja access okazała się doskonała i prosta :) Dziękuję za konkretne odpowiedzi.

Potrzebuję sprawdzać poprawność katalogu, ponieważ to użytkownik wprowadza ścieżkę, do której później zapisywane są pliki. Muszę wychwytywać błąd w podaniu ścieżki i ewentualnie tworzyć takie katalogi, jak napisał użytkownik.
P-70959
« 1 »
  Strona 1 z 1