@CCprime: pamiętaj, że rozszerzenie nie informuje o formacie danych w nim się znajdujących.
Samo rozszerzenie dla programu jest pomocne tylko wtedy, gdy format danych nie posiada nagłówka, który by zawierał informacje m.in. o tym co to za format. Z tego względu możesz mieć np. plik z obrazem PNG o nazwie foo.txt, a program graficzny i tak będzie potrafił ten obraz poprawnie załadować. Wszystko dlatego, że zamiast dobierać sposób ładowania na podstawie rozszerzenia, najpierw sprawdzi czy na początku pliku znajduje się nagłówek któregoś z obsługiwanych przez niego formatów i na tej podstawie określi czy dane ładować czy wyrzucić błąd o braku wsparcia.
Jeśli dany format nie charakteryzuje się specyficznym nagłówkiem – np. INI – to wtedy bazuje się na rozszerzeniu. Albo nie bierze się go w ogóle pod uwagę i próbuje wczytać dane w określony sposób, bez żadnego testowania. W takim przypadku co najwyżej nie uda się danych poprawnie wczytać.
Natomiast jeśli dany format posiada specyficzny nagłówek, a pomimo tego program dobiera sposób ładowania wyłącznie na podstawie rozszerzenia, no to taki program jest do d**y, bo jego autorzy poszli na łatwiznę. ;)
Przy czym należy też pamiętać, że niektóre rozszerzenia nie określają formatu danych – np. pliki .db czy .dat są uniwersalne i przyjęło się, aby jakieś tam dane do nich zapisywać (z reguły w postaci amorficznej, jako tzw. „pliki binarne”).