Jest jakis sposob zeby programowo sprawdzic jaki format ma plik, jak wiadomo czesto pliki maja inny format niz wskazuje na to rozszerzenie.
Sprawdzić zgodność ze specyfikacją, np. pliki wielu typów powinny rozpoczynać się określoną sekwencją bajtów.
To nie jest taka banalna sprawa, są programy zajmujące się takim rozpoznawaniem plików (np. file spod uniksów). Jak rozpoznać np. plik PE? Sprawdzanie 2 pierwszych wartości, to trochę za mało - sprawdzanie całego nagłówka PE to już trochę dużo. Co zrobić zresztą z plikiem, który ma nagłówek nieco zmodyfikowany, nadal wykona się jak poprawny plik PE, ale od 'standardu' odbiega. I różne takie... ale może zbyt skomplikowałem?
Pliki PE poznaje się po dwóch rzeczach - 'MZ' - z nagłówka dosowego i 'PE\0\0' wskazywanym przez ostatnie pole wspomnianego nagłówka, reszta Cię nie interesuje, co najwyżej flagi charakterystyk żeby typ binarki odróżnić.
Zależy co chcesz zrobić - jeśli chcesz sprawdzić czy plik jest w danym formacie - możesz (próbować - patrz wypowiedź somekinda) . Jeśli jednak nie znasz formatu, a chcesz go uzyskać z pliku to jesteś na właściwie straconej pozycji. Np. Pliki txt - ciąg bajtów, wyróżniający się tym tylko że nie ma w nim 'nul'i. Ale przecież nie każdy plik bez nuli to txt. Albo jeszcze lepiej - pliki COM - powodzenia.
Ogólnie wszystkie pliki w komputerze (tak, wiem że to wiesz ;) ) to tylko ileśtam bitów, a to od programu zależy jak je zinterpretuje.
MSM napisał(a)
Zależy co chcesz zrobić.
Chce tylko miec pewność, że plik z danym rozszerzeniem jest rzeczywiscie plkiem typu na który wskazuje to rozszerzenie
Dowolny plik? Wszystkie rozszerzenia?
somekind napisał(a)
Dowolny plik? Wszystkie rozszerzenia?
Głównie chodzi o te najczesciej stosowane(nie jakies egzotyczne) np jpg, bmp, tiff, gif, png, avi, mpeg itp...