Formát súboru

Formát súboru (iné názvy: súborový formát, typ súboru) je konkrétny spôsob kódovania informácií s cieľom ich uchovania v počítačovom súbore.
Keďže pevný disk, a v podstate akékoľvek pamäťové zariadenie počítača, vie uchovávať iba bity, počítač musí mať nejaký spôsob ako premieňať informácie na nuly (0) a jednotky (1), a naopak. Existujú rôzne druhy formátov pre rôzne druhy informácií. Ale, v rámci každého formátového typu, napr. dokumenty slovného procesora, bude typicky niekoľko rozdielnych – a niekedy konkurenčných – formátov.

Všeobecne

Niektoré formáty súborov sú navrhnuté tak, aby uchovávali veľmi konkrétne typy dát: formát JPEG, napríklad, je navrhnutý iba na uchovávanie statických obrázkov. Na druhej strane, iné formáty súborov sú navrhnuté na uchovávanie viacero rozličných typov dát: formát GIF podporuje uchovávanie aj nehybných obrázkov, aj jednoduchých animácií, a formát QuickTime vie plniť funkciu obalovej nádoby pre mnoho rozličných typov multimédií. Textový súbor je jednoducho taký súbor, ktorý uchováva akýkoľvek text, vo formáte napr. ASCII alebo Unicode, s veľmi málo (ak vôbec nejakými) riadiacimi znakmi. Niektoré formáty súborov, ako napríklad HTML, alebo zdrojový kód niektorého konkrétneho programovacieho jazyka, sú v skutočnosti takisto textové súbory, ale podliehajú špecifickejším pravidlám, ktoré im umožňujú byť použité na konkrétne účely.
Niekedy je možné spôsobiť, aby program prečítal súbor kódovaný v jednom formáte tak, akoby bol kódovaný v inom formáte. Napríklad je možné prehrať dokument Microsoft Word akoby to bola pesnička použitím programu na prehrávanie hudby, ktorý narába s „bezhlavičkovými“ audio súbormi. Výsledok však nebude znieť veľmi ľubozvučne. Je to preto, lebo zmysluplné usporiadanie bitov v jednom formáte je takmer vždy nezmyselné v inom formáte.

Identifikácia formátu súboru

Keďže programy sa pozerajú na súbory ako na tok dát, nutná je nejaká metóda na určenie formátu konkrétneho súboru v rámci systému súborov – príklad metadát. Rozličné operačné systémy už tradične pristupovali k tomuto problému rôzne, pričom každý z prístupov má svoje výhody a nevýhody.
Samozrejme, najmodernejšie operačné systémy, a jednotlivé aplikácie, potrebujú používať všetky z týchto prístupov pri spracovávaní rozmanitých súborov, prinajmenšom aby vedeli aspoň čítať 'cudzie' formáty súborov, ak už nie s nimi plne pracovať.

Podľa prípony súboru

Jednou z populárnych metód, ktorú používa viacero operačných systémov vrátane CP/M, DOS, a Windows, je určenie formátu súboru podľa časti jeho názvu nasledujúcej po poslednej bodke. Táto časť názvu súboru je známa ako prípona súboru. Napríklad, dokumenty HTML sú identifikované podľa názvov, ktoré končia na .html (alebo .htm na starších systémoch), alebo obrázky GIF podľa .gif. V pôvodnom systéme súborov FAT, názvy súborov boli obmedzené na osemznakový identifikátor a troj-znakovú príponu, čo je známe ako 8-bodka-3. Mnoho formátov teda ešte stále používa troj-znakové prípony, napriek tomu, že moderné operačné systémy a aplikačné programy už nemajú toto obmedzenie. Keďže neexistuje žiadny oficiálny štandardný zoznam prípon, tú istú príponu môže používať viacero formátov, čo môže popliesť operačný systém a následne používateľov.
Jedna výhoda tohto prístupu je, že sa systém dá ľahko oklamať tak, aby zaobchádzal so súborom ako s odlišným formátom jednoducho jeho premenovaním – so súborom HTML sa napríklad dá ľahko narábať ako s čistým textom ak ho premenujeme z filename.html na filename.txt. Hoci táto stratégia bola užitočná expertným používateľom, ktorí mohli ľahko pochopiť a narábať s touto informáciou, často to bolo pre menej technických používateľov mätúce, keďže mohli omylom urobiť súbor nepoužiteľným (alebo ho „stratiť“) tým, že ho nesprávne premenovali. To viedlo niektoré modernejšie používateľské rozhrania operačných systémov, ako napríklad Windows 95 a Mac OS X, skryť príponu pri zobrazovaní zoznamov rozpoznaných súborov. Takto síce používateľ nevidí celý názov súboru, ale je ťažké zmeniť príponu názvu súboru.
Pozri aj Rozšírenie názvu súboru.

Podľa magických čísel

Alternatívna metóda, často spájaná s Unixom a jeho odvodeninami, je ukladať vnútri samotného súboru „magické číslo“. Pôvodne sa toto označenie používalo na špecifickú sadu 2-bajtových identifikátorov na začiatku súboru, ale keďže akúkoľvek neodkódovanú binárnu sekvenciu možno považovať za číslo, akákoľvek vlastnosť formátu súboru, ktorá ho jednoznačne rozlišuje, sa môže použiť na identifikáciu. Obrázky GIF, napríklad, vždy začínajú sekvenciou, ktorá v ASCII reprezentuje buď GIF87a alebo GIF89a, v závislosti od normy ktorej podliehajú. Mnoho typov súborov, najmä čisto-textové súbory, sa však ťažšie rozpoznajú touto metódou. Súbory HTML, napríklad, pravdepodobne začínajú reťazcom <html> (ktorý nerozlišuje veľké a malé písmená), alebo príslušnou definíciou typu dokumentu, ktorá začína <!DOCTYPE, resp. pre XHTML identifikátorom XML, ktorý začína <?xml. Súbory by taktiež mohli začínať akýmkoľvek náhodným textom alebo niekoľkými prázdnymi riadkami, ale stále budú použiteľnými HTML.
Tento prístup ponúka lepšie záruky, že daný formát bude identifikovaný správne, a často vie určiť presnejšie informácie o súbore. Toto je však užitočné len vtedy, keď rozhranie použité na prístup k súborom umožňuje používateľovi ľahko narábať s akýmkoľvek súborom rozmanitým spôsobom—na rozdiel od systému, že dvoj-kliknutím sa automaticky vykoná tá „správna“ vec; je preto častejšie dávané do vzťahu s rozhraním príkazového riadku než s grafickými rozhraniami. Nakoľko spoľahlivé testy „magických čísel“ môžu byť dosť komplexné, a každý jeden súbor musí byť otestovaný na každú možnosť v „magickom súbore“, tento prístup je tiež relatívne neefektívny, hlavne pri zobrazení veľkého zoznamu súborov (na rozdiel od neho, metódy názvu súboru a metadáta potrebujú kontrolovať iba jeden kus dát, a priradiť ho k usporiadanému indexu). A niektoré typy súborov, ako v príklade s HTML, sa proste nedajú týmto spôsobom rozpoznať. Najlepší spôsob je však pre program kontrolovať, či súbor, ktorý má spracovať, je korektného formátu: aj keď názov súboru alebo metadáta môžu byť zmenené nezávisle od jeho obsahu, zlyhanie v dobre navrhnutom teste magických čísel je dosť pravdepodobne znakom toho, že súbor je buď poškodený alebo je nesprávneho typu.
Takzvané 'shebang' riadky v skriptových súboroch sú špeciálnym prípadom magických čísel. Tu je magické číslo pre človeka zrozumiteľný text, ktorý identifikuje konkrétny interpreter príkazov a volieb, ktoré sa odovzdajú interpreteru príkazov.

Podľa explicitných metadát

Posledným spôsobom uchovávania formátu súboru je explicitne uchovávať informácie o formáte v systéme súborov.
Tento prístup drží metadáta oddelene od hlavných dát ako aj od názvu, ale tiež je menej portovateľný než prípony súborov alebo „magické čísla“, keďže daný formát sa musí previesť zo jedného systému súborov na druhý. Hoci toto platí do určitej miery aj u prípon súborov – napríklad, kvôli kompatibilite s MS-DOS sú obmedzené na tri znaky – väčšina foriem uchovávania má zhruba ekvivalentnú definíciu dát a názvu súboru, ale môžu mať rozdielnu alebo žiadnu reprezentáciu ďalších metadát.
Všimnite si, že súbory zip resp. archivované súbory riešia problém narábania s metadátami. Programová utilitka zozbiera viacero súborov spolu s metadátami o každom jedom súbore a adresármi, z ktorých pochádzali, do jedného nového súboru (napríklad súboru zip s príponou .zip). Takýto nový súbor je tiež komprimovaný a pravdepodobne kódovaný, ale je teraz prenositeľný ako jeden súbor ascii/text cez operačné systémy formou ftp alebo priložením do e-mailu. Na cieľovej strane sa musí odzipovať kompatibilným počítačovým programom, aby bol použiteľný, ale problémy prenosu sú týmto spôsobom vyriešené.

Apple Macintosh: Kódy typu

Hierarchický Systém Súborov, ktorý používa Macintosh, uchováva kódy pre tvorcu a typ ako súčasť adresárového záznamu pre každý jeden súbor. Týmto kódom sa hovorí OSTypy, a napríklad aplikácia, ktorú napísal Apple by mala ako tvorcu AAPL a ako typ by mala APPL. RISC OS používa podobný systém, pozostávajúci z 12-bitového čísla, ktoré môže byť uzamknuté do tabuľky popisov – napr. hexadecimálne číslo FF5 je „aliasované“ k PoScript, čo predstavuje súbor PostScript.

OS/2 a Windows NT: Rozšírené atribúty

Systémy súborov HPFS, NTFS, FAT12 a FAT16 (ale nie FAT32) umožňujú k súborom uchovávať rozšírené atribúty. Tie obsahujú svojvoľnú množinu trojíc s názvom, kódovaným typom pre hodnotu a hodnotou, kde názvy sú jedinečné a hodnoty môžu byť až 64 KB dlhé. Existujú štandardizované významy pre určité typy a názvy. Jedným z nich je, že rozšírený atribút „.TYPE“ sa používa na určenie typu súboru. Jeho hodnota obsahuje zoznam jedného alebo viacerých typov súborov asociovaných s daným súborom, z ktorých každý je reťazec, ako napr. „Plain Text“ alebo „HTML document“. Teda súbor môže mať viacero typov.

POSIX: Rozšírené atribúty

V systéme Unix a v Unixu-podobných systémoch, systémy súborov ext2, ext3, ReiserFS verzia 3, XFS, JFS, a FFS umožňujú k súborom uchovávať rozšírené atribúty. Medzi tieto atribúty patrí svojvoľný zoznam reťazcov „názov=hodnota“, kde názvy sú jedinečné, môže sa k nim pristupovať cez ich „názvové“ časti.

MEME typy

MEME typy sa široko požívajú v mnohých aplikáciách súvisiacich s Internetom, a stále viac aj mimo neho, hoci ich použitie pri informáciách diskového typu je zriedkavé. MIME typy pozostávajú zo štandardizovaného systému identifikátorov, pozostávajúcich z typu a sub-typu, oddelených lomkou – napríklad, text/html alebo image/gif. Tieto boli pôvodne určené na spôsob identifikácie toho, aký typ súboru bol priložený k e-mailu, nezávisle od zdrojového a cieľového operačného systému. MIME typy sa používajú na identifikovanie súborov v BeOS-e, ako aj na uchovávanie jedinečných podpisov aplikácií pre ich spustenie.