[C++] Rozpoznawanie czy to folder, czy plik

Odpowiedz Nowy wątek
2007-11-25 17:08
0

W jaki sposób można rozpoznać, czy plik/folder, do którego mam ścieżkę dostępu to folder, czy plik (np. txt, .mp3)? Początkowo chciałem sprawdzić to, sprawdzając jakim znakiem jest 3 znak od końca ścieżki (czy to kropka) ale to się nie sprawdzi, ponieważ niektóre rozszerzenia mają więcej niż 3 znaki (np. .html) oraz foldery w nazwie również mogą mieć kropkę.

Zna może ktoś jakiś sposób na to? Piszę w WinAPI.

Pozostało 580 znaków

2007-11-25 17:42
0

nie wiem jak dokładnie ale przy wykorzystaniu funkcji FindFirst()/FindNext() można było to sprawdzić i przy przeglądnięciu czegoś na ich temat możesz znaleźć odpowiedź na to pytanie :-)


A bus station is where a bus stops.
A train station is where a train stops.
On my desk I have a workstation

Pozostało 580 znaków

2007-11-25 19:07
0

Tu http://www.winapi.org/index.php?option=com_content&task=view&id=149&Itemid=1 jest algorytm przeszukiwania dysku w Winapi. Jest tam też rozpoznawanie czy nie jest to katalog. Może Ci się to przyda.


Pozdrawiam
Jarosław Centek

Pozostało 580 znaków

2007-11-25 21:29
0

jezyk C/C++ nie definiuje obslugi systemu pliku az w takich detalach. moze posix/sysv.. jesli uzywasz najnowszych wersji standardu C++ -- uzyj boost::filesystem, tam szybko znajdziesz sposob na okreslenie czy sciezka pokazuje na katalog.. a jesli nie uzywasz boosta, to tylko zatrudnic winapi..

attrib = GetFileAttributes(path);
if ( attrib == 0xFFFFFFFF || !(attrib & FILE_ATTRIBUTE_DIRECTORY) ){
/* not a valid directory */
}

edit:
i jeszcze przyklad spod MFC wykopalem wlasnie..
http://msdn2.microsoft.com/en-us/library/scx99850(vs.71).aspx


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał

Pozostało 580 znaków

2007-11-26 18:47
0

Wielkie dzięki za wszystkie odpowiedzi.
Bardzo mi pomogliście.

Pozostało 580 znaków

2007-11-26 19:44
0

Pozwolę sobie na lekki OT.

@quetzalcoatl
Wiesz może czy boost::filesystem oferuje w końcu pracę na wchar_t? Bo poprzednia wersja pod tym względem ssała i nie dało się pracować na katalogach w nazwach których były polskie litery.


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

2007-11-27 10:46
0

hm.. szczerze mowiac nie wiem.. a w czym byl problem? jesli iterowales sobie pozawartosci katalogu w ktorym pliki mialy polskie krzaki w nazwach i nie ruszales tych nazw to wydaje mi sie ze nie bylo problemu.. problem moglby sie pojawiac jak wyryles sobie w programie sciezke zawierajaca polskei znaczki.. ale nie, nie wiem. od zarania dziejow, calkowicie umyslnie mam polskie litery gdzies, a (G)UI programow pisze po angielsku :)


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał

Pozostało 580 znaków

2007-11-27 22:19
0

Iterowałem sobie po nazwach katalogów a potem chciałem otworzyć pliki (wcześniej pobrane właśnie za pomocą directory_iteratora). No i problem w tym, że nie mógł otworzyć plików z takimi znakami. Myślałem że to przez path, więc chciałem użyć wpatch. Okazało się że jest dopiero w planach. GUI po ang. odpadało bo ktoś przecież mógł mieć polski plik ;P


Pozdrawia DzieX

int getRandomNumber() { return 4; }

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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