Chapitre 4 Les Fichiers I- Les opérations sur les fichiers Un fichier est un en

Chapitre 4 Les Fichiers I- Les opérations sur les fichiers Un fichier est un ensemble de données généralement stockées sur le disque d’un ordinateur. Les données peuvent être enregistrées dans des fichiers, puis réutilisées ultérieurement. Presque tous les programmes du monde réel utilisent des fichiers pour stocker et récupérer des données. Voici quelques exemples de progiciels familiers qui utilisent beaucoup les fichiers. • Traitement de texte : les programmes de traitement de texte sont utilisés pour écrire des lettres, des mémos, des rapports et d'autres documents. Les documents sont ensuite enregistrés dans des fichiers pour pouvoir être modifiés et réimprimés. • Systèmes de gestion de bases de données : les SGBD sont utilisés pour créer et maintenir des bases de données. Les bases de données sont des fichiers qui contiennent de grandes collections de données, telles que les enregistrements de paie, les inventaires, les statistiques des ventes et les enregistrements des clients. • Feuilles de calcul : les programmes de feuilles de calcul sont utilisés pour travailler avec des données numériques. Des nombres et des formules mathématiques peuvent être insérés dans les lignes et les colonnes de la feuille de calcul. La feuille de calcul peut ensuite être enregistrée dans un fichier pour une utilisation ultérieure. • Compilateurs : les compilateurs traduisent le code source d'un programme, qui est enregistré dans un fichier, en un fichier exécutable. Type de données Description ifstream Flux d’entrée de fichiers. Ce type de données ne peut être utilisé que pour lire les données des fichiers en mémoire. ofstream Flux de sortie de fichiers. Ce type de données peut être utilisé pour créer des fichiers et y écrire des données. fstream Flux de fichiers. Ce type de données peut être utilisé pour créer des fichiers, y écrire des données et en lire des données. 1- Utilisation du type de données fstream On définit un objet fstream comme on définit des objets d'autres types de données. L'instruction suivante définit un objet fstream nommé nouveauFichier. fstream nouveauFichier; Comme pour les objets ifstream et ofstream, vous utilisez la fonction open() d'un objet fstream pour ouvrir un fichier. La fonction ouverte d'un objet fstream nécessite cependant deux arguments : • Le premier argument est une chaîne contenant le nom du fichier ; • Le deuxième argument est un accès au fichier, indicateur qui indique le mode dans lequel vous souhaitez ouvrir le fichier. Voici un exemple. nouveauFichier.open ("Dassy.txt", ios ::out); Le premier argument de cet appel de fonction est le nom du fichier, Dassy.txt. Le deuxième argument est l'indicateur d'accès au fichier ios::out. Cela indique à C++ d'ouvrir le fichier en mode de sortie. Le mode de sortie permet d'écrire des données dans un fichier. L'instruction suivante utilise l'indicateur d'accès ios::in pour ouvrir un fichier en mode d'entrée, ce qui permet la lecture des données à partir du fichier. nouveauFichier.open ("Dassy.txt", ios::in); Il existe de nombreux indicateurs d'accès aux fichiers, comme indiqué dans le tableau ci- dessous : Indicateur d'accès aux fichiers Description ios::app(app_end) Le mode Append. Si le fichier existe déjà, son contenu est conservé et toute la sortie est écrite à la fin du fichier. Par défaut, cet indicateur entraîne la création du fichier s'il n'existe pas. ios::ate(at_end) Si le fichier existe déjà, le programme va directement à la fin de celui-ci. La sortie peut être écrite n'importe où dans le fichier. ios::binary Le mode binary. Lorsqu'un fichier est ouvert en mode binaire, les données y sont écrites ou lues au format binaire pur. (Le mode par défaut est le texte.) ios::in(input) Le mode input. Les données du fichier seront lues. Si le fichier n'existe pas, il ne sera pas créé et la fonction d'ouverture échouera ios::out(output) Le mode output. Les données seront écrites dans le fichier. Par défaut, le contenu du fichier sera supprimé s’il existe déjà. ios::trunc(trunc_ate) Si le fichier existe déjà, son contenu sera supprimé (tronqué). C'est le mode par défaut utilisé par ios::out. Plusieurs indicateurs peuvent être utilisés ensemble. Il suffit de les relier avec l’opérateur | . Par exemple, supposons que nouveauFichier est un objet fstream dans l'instruction suivante : nouveauFichier.open ("Dassy.txt", ios::in | ios::out); Cette instruction ouvre le fichier Dassy.txt dans les modes d'entrée et de sortie. Cela signifie que les données peuvent être écrites et lues à partir du fichier. L'instruction suivante ouvre le fichier de telle manière que les données ne seront écrites qu'à la fin : nouveauFichier.open ("Dassy.txt", ios::out | ios::app); En utilisant différentes combinaisons d'indicateurs d'accès, vous pouvez ouvrir des fichiers dans de nombreux modes possibles. Le programme ci-dessous utilise un objet fstream pour ouvrir un fichier pour la sortie, puis écrit des données dans le fichier. IMPORTANT : Lorsqu'il est utilisé seul, l'indicateur ios::out provoque la suppression du contenu du fichier si le fichier existe déjà. Cependant, lorsqu'il est utilisé avec l'indicateur ios::in, le contenu existant du fichier est conservé. Si le fichier n'existe pas déjà, il sera créé. Le contenu réel du fichier apparaît sous la forme d'un flux de caractères, comme illustré dans la Figure ci-dessous : M C H A T C H U I N \ n M D J O K O \ n M D A S S Y \ n <E OF > Comme vous pouvez le voir sur la figure, les caractères \n sont écrits dans le fichier avec tous les autres caractères. Les caractères sont ajoutés au fichier de manière séquentielle, dans l'ordre où ils sont écrits dans le programme. Le tout dernier caractère est un marqueur de fin de fichier. C'est un caractère qui marque la fin du fichier et est automatiquement écrit lorsque le fichier est fermé. (Le caractère réel utilisé pour marquer la fin d'un fichier dépend du système d'exploitation utilisé. Il s'agit toujours d'un caractère non imprimable. Par exemple, certains systèmes utilisent control-Z.) Le programme ci-dessous est une modification du programme ci-dessus qui illustre davantage la nature séquentielle des fichiers. Le fichier est ouvert, trois noms y sont écrits et il est fermé. Le fichier est ensuite réouvert par le programme en mode append ou ajout (avec l'indicateur d’accès ios::app). Lorsqu'un fichier est ouvert en mode append ou ajout, son contenu est conservé et toutes les sorties ultérieures sont ajoutées à l’envoi du fichier. Deux autres noms sont ajoutés au fichier avant qu'il ne soit fermé et que le programme se termine. Si l'indicateur ios::out avait été seul, sans ios::app la deuxième fois que le fichier a été ouvert, le contenu du fichier aurait été supprimé. Si tel avait été le cas, les noms M CHATCHIN, DJOKO et Dassy auraient été effacés, et le fichier n'aurait contenu que les noms DEFO et BANSI. 2- Modes d'ouverture de fichier avec les objets ifstream et ofstream Les types de données ifstream et ofstream ont chacun un mode par défaut dans lequel ils ouvrent les fichiers. Ce mode détermine les opérations qui peuvent être effectuées sur le fichier et ce qui se passe si le fichier en cours d'ouverture existe déjà. Le tableau ci-dessous décrit le mode d’ouverture par défaut de chaque type de données. Type de fichier Mode d'ouverture par défaut ofstream Le fichier est ouvert uniquement pour la sortie. Les données peuvent être écrites dans le fichier, mais pas lues à partir du fichier. Si le fichier n'existe pas, il est créé. Si le fichier existe déjà, son contenu est supprimé (le fichier est tronqué). ifstream Le fichier est ouvert pour saisie uniquement. Les données peuvent être lues à partir du fichier, mais pas écrites dessus. Le contenu du fichier sera lu depuis son début. Si le fichier n'existe pas, la fonction d'ouverture échoue. Vous ne pouvez pas modifier le fait que les fichiers ifstream ne peuvent qu’être lus et les fichiers ofstream ne peuvent qu’être écrits. Vous pouvez toutefois modifier la manière dont les opérations sont effectuées sur ces fichiers en fournissant un indicateur d'accès aux fichiers comme second argument facultatif de la fonction d'ouverture. Le code suivant montre un exemple utilisant un objet ofstream. ofstream ecrireFichier; ecrireFile.open ("Dassy.txt", ios::out | ios::app); L'indicateur ios::app spécifie que les données écrites dans le fichier Dassy.txt doivent être ajoutées à son contenu existant. 3- Vérification de l’existence d’un fichier avant son ouverture Parfois, vous souhaitez savoir si un fichier existe déjà avant de l'ouvrir pour la sortie. Vous pouvez le faire en essayant d'abord d'ouvrir le fichier pour l'entrée. Si le fichier n'existe pas, l'opération d'ouverture échouera. Dans ce cas, vous pouvez créer le fichier en l'ouvrant pour la sortie. Le code suivant donne un exemple 4- Ouverture d'un fichier avec l'instruction de définition d'objet de flux de fichiers Une alternative à l'utilisation de la fonction membre d'ouverture consiste à utiliser l'instruction de définition d'objet de flux de fichiers pour ouvrir le fichier. Voici un exemple : fstream nouveauFichier ("Dassy.txt", ios :: in | ios :: out); Cette instruction définit un objet fstream nommé nouveauFichier et l'utilise pour ouvrir le fichier Dassy.txt. Le fichier est ouvert dans les deux modes d'entrée et de sortie. Cette technique élimine le besoin d'appeler la fonction open() lorsque votre programme uploads/Philosophie/ chapitre-4-e-l2-fichiers.pdf

  • 35
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager