Formato di file

Un formato di file, in informatica, indica la convenzione che viene usata per leggere, scrivere e interpretare i contenuti di un file.

Poiché i file non sono altro che insiemi ordinati di byte, cioè semplici numeri, per poter associare al loro contenuto cose diverse si usano convenzioni che legano i byte ad un significato. Ad esempio, un formato di file per immagini può stabilire che i primi due byte sono l'altezza e la larghezza dell'immagine, e i seguenti i colori secondo uno schema preordinato. I file di testo usano vari sistemi di codifica (come il sistema ASCII) per rappresentare lettere e formattazioni diverse.

È teoricamente possibile, a meno di leggere manipolazioni, interpretare il contenuto di un file come se fosse codificato secondo un formato diverso da quello con cui è stato creato: i byte letti sono generalmente validi, anche se non dotati di molto senso; ad esempio è possibile leggere un'immagine come se fosse un file musicale, ma molto probabilmente si otterranno solo rumori e non musica.

Identificazione

Tramite l'estensione 

Il formato di un file è per convenzione indicato attraverso l'estensione, che è una serie di lettere (in genere tre, per motivi storici del formato 8.3) unita al nome del file attraverso un punto. Ad esempio, "prova.txt" è un file di testo (o meglio, il suo contenuto va interpretato come testo), mentre "prova.jpg" è un'immagine. Microsoft Windows ad esempio usa questo metodo per identificare il tipo di file.

Tramite "magic number" 

Il formato di un file può anche essere identificato dai primi due o più byte del file (comunemente detti magic number), ad esempio #! identifica gli script nei sistemi Unix e Unix-like (vedi anche shabang), mentre 0xffd8 identifica le immagini in formato jpeg. I sistemi operativi Unix-like utilizzano questo metodo per identificare il tipo di file.

Tramite metadati espliciti 
I file system HFS e HFS+ usati sui computer macintosh affiancano ogni file con informazioni dettagliate sul suo formato, il programma che l'ha creato ecc.

Un approccio simile è usato con i tipi MIME e gli Internet media type, usati per identificare il formato dei messaggi di posta elettronica o delle comunicazioni del World Wide Web.

Specifiche 
Per molti formati sono state pubblicate delle specifiche che descrivono esattamente come i dati devono essere codificati e che possono essere usate per stabilire se un programma specifico tratti correttamente o meno un determinato formato.

Se il formato è chiuso e proprietario (generato da un codice sorgente la cui specifica è chiusa e proprietaria), può essere letto soltanto dal software pubblicato da chi detiene la specifica del formato stesso. Invece, per i formati proprietari e aperti, in genere audio o video, esistono dei codec che permettono la loro lettura tramite molteplici programmi.

Non sempre tali specifiche sono disponibili: innanzitutto alcuni formati sono considerati segreti industriali e le loro specifiche non vengono distribuite pubblicamente, come avviene ad esempio per molti dei formati usati dalla suite Microsoft Office; inoltre in molti casi gli sviluppatori non scrivono un documento di specifica separato, ma definiscono il formato solo implicitamente attraverso il programma che lo gestisce. In questo modo non è possibile creare altri programmi simili che possano leggere i dati salvati con quel programma  (il file può sempre essere teoricamente letto da qualunque programma: ma i dati restano incomprensibili, se non si conosce il formato con cui sono stati salvati).

Risalire ai dati originali salvati in un formato sconosciuto è sempre possibile, attraverso un lavoro di reverse engineering sul file, ma è di solito un processo molto lungo e costoso. Se il formato in questione è anche criptato, risalire ai dati diventa praticamente impossibile.

Note

Voci correlate 
Estensione (file)
File
Formato documentale
Formato aperto
Formato proprietario
Formato contenitore
Lista di formati di file

Altri progetti

Collegamenti esterni 

  BIEW Binary vIEW project