# File INI

Un file INI o file di inizializzazione è un formato di file testuale utilizzato da numerosi programmi al fine di memorizzare le configurazioni. Viene generalmente letto all'avvio dell'applicazione.
I file INI sono stati introdotti nelle prime versioni di Microsoft Windows. A partire da Windows 95 si è preferito utilizzare il registro di sistema, nonostante alcune configurazioni, tra cui le impostazioni di visualizzazione della singola cartella su File Explorer, utilizzano ancora tale formato.
Le Windows API offrono i metodi necessari per leggere e modificare i file INI all'interno di un'applicazione.

## Formato

Fra i motivi della sua diffusione, il formato di file INI vanta una facile interpretabilità dall'uomo, essendo un formato di file testuale. Un esempio:
Il file risulta evidentemente suddiviso in due sezioni, una denominata Sezione1 e l'altra Sezione2; all'interno di ognuna (a seguito cioè delle rispettive dichiarazioni d'inizio) sono presenti i valori delle impostazioni d'inizializzazione richiesti dal programma, con la possibilità di inserire commenti.
Ricapitolando:
* Una sezione inizia con la dichiarazione del suo nome racchiuso fra parentesi quadre.
* L'assegnazione di un valore ad un parametro di una sezione si effettua con un'assegnazione matematica (variabile = valore) a seguito della dichiarazione della sezione. Solitamente, caratteri di spaziatura intorno all'uguale sono ignorati.
* Una riga che inizia con un punto e virgola è considerata un commento, ed in quanto tale ignorata.

## Disomogeneità

Sebbene la specifica di Microsoft sia ben definita, esistono alcune varianti al formato di file standard, riguardanti perlopiù la definizione dei valori dei parametri. Ecco le più diffuse deviazioni dallo standard:
* Alcuni programmi, come Samba, considerano commenti le righe che iniziano per punto e virgola (';') o per cancelletto ('#'); sono previsti anche commenti alla fine delle righe di valorizzazione dei parametri, con vari formati.
* In alcune implementazioni, l'aggiunta di una barra rovesciata ('\') alla fine di una riga di valorizzazione indica il proseguimento di quest'ultima sulla riga successiva. Alcune ulteriori deviazioni dallo standard permettono di inserire sequenze di escape all'interno dei valori, come '\n' per intendere un avanzamento di riga.
* In caso di duplicazione del nome di una sezione, il programma può interpretare la seconda definizione come una ridefinizione dei parametri precedentemente definiti o, in caso di assenza di conflitti fra le valorizzazioni dei parametri, semplicemente unire le due dichiarazioni di sezione. Questo comportamento varia da programma a programma.
* Qualche implementazione permette di utilizzare i due punti (':') al posto del simbolo di uguaglianza ('=').

## Esempio di file .INI

Su Windows un file di inizializzazione che svolge attività vitali per il funzionamento del computer è il boot.ini. Un esempio di boot.ini è:
In questo file sono presenti due sezioni: Boot loader e Operating systems.
Nella prima si trovano:
* il timeout: è il tempo di visualizzazione della lista dei sistemi operativi, ed è impostato a 30.
* il default: indica il sistema operativo di default.
Nella seconda sezione si trovano invece la lista dei sistemi operativi (in questo caso, solo uno) e tutte le informazioni necessarie per fare partire il sistema operativo impostato.