Notion de fichier


Un fichier est un ensemble de données informatiques stockées en mémoire auxilliaire possédant un nom, un chemin d'accès et généralement implicitement associé à un format (format image, format de documents, formats de base de données, ....).

Les notions de nom, chemin et format seront explicités un peu plus loin.

Le terme de mémoire auxilliaire désigne tout support de stockage de l'information d'un ordinateur autre que la mémoire vive (disque dur, CD, DVD, clef USB, ...) .

Le fait qu'un fichier soit toujours stocké sur mémoire auxilliaire à deux conséquences.

Premièrement, les données contenues dans un fichier ne sont pas perdues lorsque l'ordinateur est mis hors tension (contrairement aux données contenues dans les variables d'un programme !).

Deuxièmement, l'accès à des données stockées dans un fichier est considérablement plus lent qu'un accès à des données contenues en mémoire vive.

Nom de fichier

La manière de nommer les fichiers dépend fortement du système d'exploitation. Selon le système, les caractères autorisés ne sont pas forcéments les mêmes, certains caractères spéciaux n'ont pas nécessairement la même signification, ... etc.

Voici une comparaison des règles d'écriture des noms de fichier dans les systèmes Windows et Linux.

Dossiers et arborescence de fichier

Un support de stockage peut contenir des milliers, voir des millions de fichiers. Il fallait donc trouver un moyen efficace de les ranger. C'est pour cette raison qu'a été introduit la notion de dossier (ou répertoire ) qui permet de regrouper les fichiers en sous-ensembles.

Un dossier est conceptuellement un conteneur: il peut contenir des fichiers ou d'autres dossiers (appelé dans ce cas sous-dossiers).

Par l'intermédiaire des dossiers on peut donc organiser hiérarchiquement un support de stockage sous forme d'une arborescence.

Voici, par exemple une arborescence contenant trois dossiers et cinq fichiers:

Arborescence.jpg, 34kB

Dans ce schéma, une flèche signifie "contient": le dossier 1 contient le dossier 2, le dossier 3 contient le fichier truc.java. Les dossiers 2 et 3 sont des sous-dossiers du dossier 1. Inversement, on dit que le dossier 1 est le dossier parent des dossiers 2 et 3.

Remarques importantes:

Chemin d'accès

Le chemin d'accès d'un fichier définit sa localisation sur un support de stockage donné. C'est une chaine de caractères qui définit la suite des répertoires à parcourir pour atteindre le fichier depuis la racine du support (chemin absolu) ou depuis un certain répertoire (chemin relatif).

La manière de décrire un chemin dépend du système d'exploitation. Par exemple, sous Windows, les répertoires sont séparés par un anti-slash (le caractère \), alors que sous Linux, ils sont séparés par un slash (le caractère /).


Chemin absolu

Le chemin absolu d'un fichier est défini par la liste des dossiers à parcourir pour atteindre ce fichier depuis la racine de l'arborescence.

Sous Windows, un chemin absolu est une chaine de caractères de la forme:

 X:\Répertoire\Répertoire\ ... \Répertoire\Nom du fichier 

X est une lettre définissant le support utilisé.

Supposons par exemple que notre exemple d'arborescence décrive l'organisation des fichiers sur une clé USB associée à la lettre F.

Le chemin absolu du fichier truc.java sera:

 F:\dossier1\dossier3\truc.java 

Chemin relatif

Le chemin relatif d'un fichier défini sa position par rapport à un dossier donné de l'arborescence. On utilise pour cela la notation .. pour désigner le dossier parent d'un dossier donné.

Ici, la seule différence entre la notation Windows et celle de Linux est l'utilisation du \ au lieu du /.

Voici par exemple comment noter sous Windows, le chemin relatif du fichier cv.html par rapport au dossier 3:

    ..\dossier2\cv.html

sous Linux ce serait:

    ../dossier2/cv.html

Cette notation signifie que le fichier cv.html se situe dans le sous-dossier dossier2 du dossier parent de dossier3.

Deuxième exemple: le fichier chat.jpg, se situe à la racine du périphérique. Sous Linux, son chemin relatif par rapport à dossier3, s'écrirait :

    ../../chat.jpg

Cliquez ici pour voir l'arborescence dans le cadre droit.


Répertoire courant

Par défaut, lorsqu'un programme s'exécute, il va rechercher les fichiers à traiter dans le répertoire courant. Avec un langage compilé, c'est le fichier dans lequel se trouve l'exécutable. Pour un langage interprété, c'est le répertoire dans lequel se situe les fichiers sources du programme. Autrement dit, lorsque vous souhaitez accéder à un fichier dans ce répertoire, vous n'avez pas besoin de préciser le chemin.

Format

Le format d'un fichier est un ensemble de conventions définissant la représentation des données qu'il contient : la localisation et le codage des différents types d'informations contenues dans le fichier.

Le fichier en lui même ne permet pas de retrouver son format : comme toute chose en informatique, ce n'est qu'une suite de zéros et de uns. La seule manière de vérifier si un fichier est bien dans un format donné est de l'ouvrir avec un logiciel adapté à ce format. Si le logiciel gère correctement le fichier, il est certainement dans le bon format (mais ce n'est pas une certitude !)

Exemple : si je peux ouvrir un fichier avec word, il s'agit très certainement d'un fichier respectant un des formats acceptés par word (.doc, .txt, ...). Au contraire, si j'essaie d'ouvrir avec word un fichier qui n'est pas dans un format accepté par word, il se produira probablement n'importe quoi.

Sous windows, le format d'un fichier est repérable par son extension (.doc pour un fichier word, .exe pour un fichier exécutable ... etc). Mais l'extension d'un fichier peut être changé manuellement ... L'extension d'un fichier ne donne donc aucune certitude sur son format !

Les fichiers textes

Les fichiers textes sont des fichiers destinés à contenir un texte, ou plus précisément une suite de lignes de texte. Ce sont par exemple les fichiers d'extension .txt sous windows, les fichiers sources d'un programme, les fichiers html etc ....

Un fichier texte peut être affiché et modifié par un éditeur de texte (exemple: Notepad sous windows, emacs sous linux).

Il existe un certain nombre de formats standards pour représenter des fichiers de ce type, selon le type de codage des caractères (ASCII, ISO, UTF, ... etc) et selon la manière de représenter le passage à la ligne (dépendant du système d'exploitation).

Mais indépendamment du format, vous pouvez imaginez un fichier texte comme une chaine de caractères dans laquelle figure des caractères de saut de ligne. Ce caractère spécial est souvent représenté en programmation par la notation \n.