Gestion de Fichiers GF2 Operations de Base en
Gestion de Fichiers GF-2: Operations de Base en C++ sur les Fichiers (Base sur Chapitre 2 de Folk, Zoellick & Riccardi, File Structures, An Object. Oriented Approach with C++)
Resume du Cours d’Aujourd’hui n n n n Fichiers Logiques vs. Fichiers Physiques Ouverture et Fermeture des fichiers Lecture, Ecriture et Recherche dans les Fichiers Caracteres Speciaux La Structure du Repertoire de l’Unix Peripheeriques et Fichiers Logiques Commandes pour la Gestion de Fichiers en Unix. 2
Fichiers Logiques vs. Fichiers Physiques n n n Fichiers Physiques: Une collection d’octets sauvegardes sur une disque ou sur une bande magnetique. Fichier Logique: Un “Canal” (comme une ligne telephonique) qui cache les details de la location du fichier et de ses caracteristiques physiques au programme. Lorsqu’un programme veut utiliser un fichier particulier, “data”, le systeme d’exploitation doit trouver le fichier physique appele “data” et etablir la connection en lui affectant un fichier logique. Ce fichier logique a un nom logique qui est le nom utilise dans le programme. 3
Ouverture de Fichiers n Ø Ø Une fois que l’identificateur du fichier logique est connecte a un fichier physique ou a un peripherique, il est necessaire de declarer ce que l’on compte faire avec le fichier: n Ouvrir un fichier existant n Creer un nouveau fichier Ceci rend le fichier pret a etre utilise par le programme. On est positionne au debut du fichier est pret a lire ou ecrire. 4
Fermeture de Fichiers n n n Permet au nom logique du fichier d’etre utilise par un autre fichier physique (c’est comme raccrocher le telephone apres un appel). Garantit que tout ce qui a ete ecrit dans le fichier est en effet sauvegarde [puisque les donnees ont ete ecrites dans une memoire tampon (buffer) avant d’etre ecrites dans le fichier. ] Les fichiers sont generalement fermes automatiquement par le systeme d’exploitation (a moins que le programme ait ete anormalement interrompu). 5
Lecture n Read(Source_file, Destination_addr, Size) n n n Source_file = location a laquelle le programme commence sa lecture (i. e. , son nom de fichier logique). Destination_addr = la premiere addresse du bloc de memoire dans lequel les donnees seront sauvegardees. Size = la quantite d’information arrivant du fichier (le nombre d’octets) 6
Ecriture n Write(Destination_file, Source_addr, Size) n n n Destination_file = le nom du fichier logique dans lequel les donnees seront ecrites. Source_addr = a premiere addresse du bloc de memoire dans lequel les donnees qui vont etre ecrites sont sauvegardees. Size = Le nombre d’octets qui seront ecrits dans le fichier. 7
Recherche n n n Un programme ne doit pas necessairement lire un fichier sequentiellement: il peut sauter a des locations specifiques dans le fichier ou jusqu’au bout du fichier afin d’y ajouter (append) de l’information. L’action de se deplacer directement jusqu’a une position specifique dans un fichier s’appelle souvent recher (seeking). Seek(Source_file, Offset) n n Source_file = le nom du fichier logique dans lequel la recherche va pendre place. Offset = le nombre de positions dans le fichier que le pointeur depassera a partir du debut du fichier. 8
Caracteres Speciaux dans les Fichiers I n n n Parfois, le systeme d’exploitation essaie de rendre la vie des usagers “reguliers” plus facile en ajoutant ou effacant certains caracteres automatiquement. Ces modifications, neanmoins, rendent la vie de programmeurs construisant des structures de fichiers sophistiquees (vous) bien plus compliquee. Il est important de se souvenir que de telles situations peuvent frequemment arriver. 9
Caracteres Speciaux dans les Fichiers II: Examples n n n Control-Z est ajoute a la fin de tous les fichiers MS-DOS. Ceci est fait pour signaler la fin d’un fichier. <Carriage-Return>+<Line-Feed> sont ajoutes a la fin de chaque lignes de fichiers MS-DOS. <Carriage-Return> est efface et remplace par le nombre de caracteres par ligne de texte dans les fichiers VMS. 10
La Structure du Repertoire de l’Unix I n n Tous les systemes informatiques contiennent de nombreux fixhiers (des centaines ou des milliers). Ces fichiers doivent etre organises d’une facon ou d’une autre. En Unix (un systeme d’exploitation important), cette organisation s’appelle le System de Fichiers (File System). Le systeme de fichiers de l’Unix est une organisation des repertoires en arbre. La racine de l’arbre est representee par le caractere ‘/’. Chaque repertoire contient des fichiers reguliers et/ou d’autres repertoires. Le nom de fichier sauvegarde dans un repertoire Unix correspond a son nom physique. 11
La Structure du Repertoire de l’Unix II n n Chaque fichier peut etre identifie de facon unique en donnant son cheminement absolu (absolute pathname). Par example: /usr 6/mydir/addr. Le repertoire dans lequel vous etes situe s’appelle le repertoire courant (current directory). Il est possible de referrer a un fichier par son cheminement (path) relatif au repertoire courant. ‘. ’ signifie le repertoire courant et ‘. . ’ signifie le repertoire parent (parent directory). 12
Peripheriques et Fichiers Logiques n n n Unix a une vue tres generale de ce qu’est un fichier: pour Unix, un fichier est une sequence d’octets dont ni la location de storage ni la provenance ne sont importantes. Les disques ou cassettes/bandes magnetiques peuvent etre assimiles a des fichiers. De meme pour le clavier et la console. Quelle que soit la forme physique d’un fichier en Unix (que ce soit un fichier reel ou un peripherique), il est represente de la meme facon: par un entier. 13
Stdout, Stdin, Stderr n Stdout Console n n n Stdin Clavier n n n fwrite(&ch, 1, 1, stdout); ou cout << ch; fread(&ch, 1, 1, stdin); ou cin >> ch; Stderr Error Standard (en fait, la console) n [Lorsque le compilateur detecte une erreur, le message d’erreur est ecrit dans ce fichier] 14
Redirection et Pipes d’Entrée/Sortie n < nom_de_fichier [redirecte stdin dans n > nom_de_fichier [redirecte stdout dans n n n “nom_de_fichier”] “nom_de_fichier]. Example: a. out < mon_entrée > ma_sortie. Programme 1 | Programme 2 [prend le stdout du Programme 1 et l’utilise comme stdin pour Programme 2. ] Example: list | sort; 15
Commandes Usuelles du Systeme Unix n cat filenames [Imprime le contenu des fichiers nommes] tail filename [Imprime les 10 dernieres lignes du fichier] cp file 1 file 2 [copie file 1 dans file 2] mv file 1 file 2 [deplace (renomme) file 1 dans file 2] rm filenames [efface les fichiers nommes] n chmod mode filename [change le mode de protection n n n des fichiers nommes] ls [Liste le contenu du repertoire] mkdir name [cree un repertoire de nom donne] rmdir name [efface le repertoire nomme] 16
- Slides: 16