La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Gestion de Fichiers Operations de Base en C++ sur les Fichiers.

Présentations similaires


Présentation au sujet: "Gestion de Fichiers Operations de Base en C++ sur les Fichiers."— Transcription de la présentation:

1 Gestion de Fichiers Operations de Base en C++ sur les Fichiers

2 2 Plan du cours daujourdhui Fichiers logiques vs. fichiers physiques Ouverture et fermeture des fichiers Lecture, écriture et recherche Caractères speciaux La structure du répertoire de lUnix Périphériques et fichiers logiques Gestion de fichiers en Unix

3 3 Ouverture de fichiers Une fois que lidentificateur du fichier logique est connecté à un fichier physique ou à un périphérique, il est nécessaire de déclarer ce que lon compte faire avec le fichier: Ouvrir un fichier existant Creer un nouveau fichier Le fichier est pret à être utilisé par le programme. On est positionné au début du fichier qui est maintenant prêt à la lecture/ écriture.

4 4 Ouverture de fichiers en C FILE * outfile; outfile = fopen (monfichier.txt,w); Le premier argument indique le nom du fichier et le second le mode douverture. Le mode peut être: r, w, a, r+, w+, a+.

5 5 Ouverture de fichiers en C++ fstream outfile; Outfile.open (monfichier.txt,ios::out); Le second argument indique le mode. Sa valeur est calculée en appliquant loperateur | (bitweise or) sur des constantes prédéfinies dans la classe ios. Ces constantes sont: ios::in, ios::out, ios::app, ios::trunc, ios::nocreate, ios::noreplace, ios::binary, etc.

6 6 Fichier logique vs. fichier physique Fichier Physique: collection doctets sauvegardés sur un disque ou sur une bande magnétique Fichier Logique: Canal (analogie: ligne téléphonique) cachant les détails de la localisation et des caractéristiques physiques au programme Lorsquun programme veut utiliser un fichier particulier, data, le système dexploitation doit trouver le fichier physique appelé data et établir la connection en lui affectant un fichier logique. Le nom de ce dernier est celui utilisé dans le programme.

7 7 Fichier logique vs. physique: C et C++ En C, a fichier logique est déclaré comme suit: FILE *outfile; En C++, cest fait comme ceci: fstream outfile; Ici, ce nom est déclaré comme un objet de la classe fstream. Dans les deux langues, le nom logique outfile sera associé plutard à un nom physique.

8 8 Fermeture de fichiers Permet au nom logique du fichier dêtre utilisé par un autre fichier physique (cest comme raccrocher le téléphone après un appel). Garantit que tout ce qui a été ecrit dans le fichier est en effet sauvegardé Les fichiers sont généralement fermés automatiquement par le système dexploitation (à moins que le programme ait été anormalement interrompu). En C: fclose(outfile); En C++: outfile.close();

9 9 Lecture Read(Source _file, Destination_addr, Size) Source_file = location à laquelle le programme commence sa lecture (i.e., son nom de fichier logique) Destination_addr = la première addresse du bloc de mémoire dans lequel les données seront sauvegardées Size = la quantité dinformation arrivant du fichier (le nombre doctets -- MBs)

10 10 Lecture en C char c; // un charactère char a[100]; // un array avec 100 charactères FILE * infile; infile = fopen("monfichier,"r"); fread(&c,1,1,infile); /* lis un charactère */ fread(a,1,10,infile); /* lis 10 charactères */ Argument de fread: 1er argument: adresse de destination (adresse de c) 2ème argument: taille de lélément en bytes (un char =1 byte) 3ème argument: nombre délément à lire 4ème argument: nom logique du fichier à lire

11 11 Lecture en C++ char c; // un charactère char a[100]; // un array avec 100 charactères fstream infile; infile.open("monfichier,ios::in); infile >> c; // lis un charactère infile.read(&c,1) // une autre manière de lire un char. infile.read(a,10); // lis 10 charactères Note: C++ fournit une méthode read correspondant à la fonction read de C.

12 12 Ecriture Write(Destination_file, Source_addr, Size) Destination_file = le nom du fichier logique dans lequel les données seront écrites Source_addr = la première addresse du bloc de mémoire dans lequel les données qui vont être écrites sont sauvegardées Size = Le nombre doctets qui seront écrits dans le fichier

13 13 Ecriture en C char c; char a[100]; FILE * outfile; outfile = fopen("mynew.txt","w"); /* Nous omettons dinitialiser c et a */ fwrite(&c,1,1,outfile); fwrite(a,1,10,outfile);

14 14 Ecriture en C ++ char c; char a[100]; fstream outfile; outfile.open("mynew.txt",ios::out); // Nous omettons dinitialiser c et a outfile << c; outfile.write(&c,1); outfile.write(a,10);

15 15 Détection de la fin dun fichier Tester si un fichier est à la fin comme suit: En C: int i; i = fread(&c,1,1,infile); // essaie de lire if (i==0) // true si le fichier est à la fin …. En C++: infile >> c; // essaie de lire if (infile.fail()) // true si le fichier est à la fin...

16 16 Recherche La lecture nest pas confinée un processus séquentiel: un saut peut être fait à des locations spécifiques dans le fichier ou jusquau bout du fichier afin dy ajouter (append) de linformation. Un déplacement direct jusquà une position spécifique dans un fichier sappelle recherche (seeking). Seek(Source_file, Offset) 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 dépassera à partir du début du fichier.

17 17 Programme manipulant des fichiers Exemple de programme pour afficher le contenu dun fichier sur lécran – version C #include main() { char ch; FILE * infile; infile = fopen("A.txt","r"); while (fread(&ch,1,1,infile) != 0) fwrite(&ch,1,1,stdout); fclose(infile); }

18 18 Programme – version C++ #include main() { char ch; fstream infile; // declare un nom logique infile.open("A.txt",ios:in); // attache le nom logique a un nom physique infile.unsetf(ios::skipws); // flag pour inlure les blanks dans la lecture infile >> ch; while (! infile.fail()) { cout << ch ; infile >> ch ; } infile.close(); }

19 19 Caractères spéciaux Parfois, le système dexploitation essaie de rendre la vie des usagers reguliers plus facile en ajoutant ou effacant certains caractères automatiquement. Ces modifications, néanmoins, rendent la vie des programmeurs bien plus compliquée. Il est important de se souvenir que de telles situations peuvent fréquemment arriver.

20 20 Caractères spéciaux: exemples Control-Z est ajouté à la fin de tous les fichiers MS-DOS. Ceci est fait pour signaler la fin dun fichier. + sont ajoutés à la fin de chaque lignes de fichiers MS-DOS. est effacé et remplacé par le nombre de caractères par ligne de texte dans les fichiers VMS.

21 21 La structure du répertoire de lUnix Un grand système informatique contient de nombreux fichiers (parfois des milliers). Ces fichiers doivent être organisés. Dans un système dexploitation, cette organisation sappelle le système de fichiers (file system). Le système de fichiers de lUnix est une organisation des répertoires en arbre. La racine de larbre est représentée par le caractère / (slash. Chaque répertoire contient des fichiers réguliers et/ou dautres répertoires. Le nom dun fichier sauvegardé dans un répertoire Unix correspond à son nom physique.

22 22 La structure du répertoire de lUnix (suite) Chaque fichier peut être identifié de façon unique en donnant son cheminement absolu (absolute path). Par example: /homes/kiringa/courses/csi2511. Le répertoire dans lequel vous êtes situé sappelle le répertoire courant (current directory). On peut aussi se réferrer à un fichier par son cheminement (path) relatif au répertoire courant.. signifie le répertoire courant et.. signifie le répertoire parent (parent directory).

23 23 Péripheriques et fichiers logiques Unix a une vue très générale de ce quest un fichier: pour Unix, un fichier est une séquence doctets dont ni la location de stockage ni la provenance ne sont importantes. Les disques ou cassettes magnétiques peuvent être assimilés à des fichiers. De même pour le clavier et la console. Quelle que soit la forme physique dun fichier en Unix (que ce soit un fichier réel ou un périphérique), il est représenté de la même façon: par un entier.

24 24 stdout, stdin, stderr stdout console fwrite(&ch, 1, 1, stdout); ou cout << ch; stdin clavier fread(&ch, 1, 1, stdin); ou cin >> ch; stderr erreur standard (en fait, la console) Lorsque le compilateur détecte une erreur, le message derreur est écrit dans ce fichier

25 25 Redirection et pipes dentrée/sortie < nom_de_fichier -- rediriger stdin dans nom_de_fichier > nom_de_fichier -- rediriger stdout dans nom_de_fichier Example: a.out ma_sortie Programme1 | Programme2 -- prend le stdout de Programme1 et lutilise comme stdin pour Programme2 Example: list | sort

26 26 Commandes usuelles de fichiers en Unix cat filenames -- Imprime le contenu des fichiers nommés tail filename -- Imprime les 10 dernières lignes du fichier cp file1 file2 -- copie file1 dans file2 mv file1 file2 -- déplace (renomme) file1 dans file2 rm filenames -- efface les fichiers nommés chmod mode filename -- change le mode de protection des fichiers nommés ls -- Liste le contenu du répertoire mkdir name -- crée un répertoire avec le nom donné rmdir name -- efface le répertoire nommé


Télécharger ppt "Gestion de Fichiers Operations de Base en C++ sur les Fichiers."

Présentations similaires


Annonces Google