Rozpoznanie rodzaju elementu

dział ogólny

Rozpoznanie rodzaju elementu

Nowy postprzez Chlorek » czwartek, 24 listopada 2011, 19:17

Mam program, który tworzy listę wszystkich elementów w wybranym folderze, do tego celu użyłem funkcji z dirent.h. Minusem tej metody jest to, iż elementy te są listowane bez możliwości ustawienia ich rodzaju (czy to plik, czy też folder). I tu jest moje pytanie jak i w ogóle czy jest możliwość rozpoznania czy to folder czy plik po samej nazwie? Od razu mówię, że takie banalne metody typu sprawdzenie czy nazwa zawiera rozszerzenie odpada (folder może się nazywać "dir.txt", a plik "file" i już taka metoda nie zadziała).
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    Windows XPFirefox

Re: Rozpoznanie rodzaju elementu

Nowy postprzez Cyfrowy Baron » czwartek, 24 listopada 2011, 20:44

Chlorek napisał(a):do tego celu użyłem funkcji z dirent.h.


Jakiej funkcji konkretnie, gdyż u mnie ten plik zawiera tylko struktury dirent i wdirent, a nie przypominam sobie bym kiedykolwiek korzystał z tego pliku, no chyba, że nieświadomie.

Chlorek napisał(a):czy jest możliwość rozpoznania czy to folder czy plik po samej nazwie?


Nie ma takiej możliwości. Nazwa czy to pliku, czy też folderu to tylko łańcuch znaków, który nie zawiera żadnych informacji o typie pliku, czy też nazwie. Nie wiem o co Tobie dokładnie chodzi, ale można by ewentualnie posłużyć się metodą DirectoryExists dla każdego elementu listy. W tej sytuacji jedna nie wystarczy sama nazwa, lecz potrzebna jest cała ścieżka dostępu do katalogu lub pliku. Jeżeli na liście masz tylko nazwy to masz po prostu listę zbudowaną z łańcuchów znaków i nic ponad to.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Rozpoznanie rodzaju elementu

Nowy postprzez Chlorek » czwartek, 24 listopada 2011, 20:51

Oczywiście mam też ścieżkę, na razie jeszcze właściwie jej nie mam ale później i tak będę potrzebował tego do mojego programu, gdyż będzie to jedna z kluczowych rzeczy w mojej aplikacji, więc możemy uznać, że ją posiadam. Co do dirent.h funkcje opendir() i readdir() posłużyły mi do listowania zawartości folderów.
Sprawdzę tę funkcję DirectoryExists() i dam znać z jakim rezultatem.
Kevin Mitnick - łamacz ludzi, nie haseł.
Najlepszy sposób nauki c++... pisać, pisać, pisać, pisać i jeszcze raz pisać!
Avatar użytkownika
Chlorek
Bladawiec
Bladawiec
 
Posty: 41
Dołączył(a): czwartek, 6 stycznia 2011, 20:20
Lokalizacja: Tu i tam
Podziękował : 2
Otrzymał podziękowań: 0
System operacyjny: Linux Macpup & Win XP Prof & Linux SlackWare & Linux Ubuntu
Kompilator: Dev-C++ v4.9.9.2 (mingw 3.4.2); Code::Blocks v10.05 (mingw najnowsze)
SKYPE: chlorekcl
    Windows XPFirefox

Re: Rozpoznanie rodzaju elementu

Nowy postprzez polymorphism » czwartek, 24 listopada 2011, 21:11

(...) jak i w ogóle czy jest możliwość rozpoznania czy to folder czy plik po samej nazwie?

Funkcja GetFileAttributes.

DirectoryExists to funkcja VCL-owska, zatem Tobie nic ona nie da.
C++ Reference - opis wszystkich klas STL-a i funkcji C.
Avatar użytkownika
polymorphism
Doświadczony Programista ● Moderator
Doświadczony Programista ● Moderator
 
Posty: 2156
Dołączył(a): piątek, 19 grudnia 2008, 13:04
Podziękował : 0
Otrzymał podziękowań: 200
System operacyjny: Windows 8.1
Windows 10
Linux Mint 21.1
Kompilator: Visual Studio
Visual Studio Code
MSYS2 (MinGW, clang)
g++
clang
Gadu Gadu: 0
    Windows XPFirefox


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 5 gości