Operations de Base en C++ sur les Fichiers

Slides:



Advertisements
Présentations similaires
Module Systèmes d’exploitation
Advertisements

GEF 435 Principes des systèmes dexploitation Structure du logiciel dE/S Partie II (Tanenbaum & 5.3.4)
Premier programme en C :
PHP Accès au système de fichiers
Stockage de données.
Cours n° 2 Les entrées-sorties Biliothèque C++ (iostream) –
Portée des variables VBA & Excel
GEF 435 Principes des systèmes dexploitation Concepts des Systèmes dexploitation (Tanenbaum 1.5)
GEF 435 Principes des systèmes dexploitation Appels de système (Tanenbaum 1.6)
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
(Classes prédéfinies – API Java)
Systèmes d’Exploitation
FORMATION OUTILS « FONCTIONS »
Suite à de nombreuses remarques concernant le projet de structures de données 'Gestion d'un Aéroport' , voici un polycopié de cours concernant la gestion.
FLSI602 Génie Informatique et Réseaux
Tutoriel pour l’utilisation de
Systèmes d’exploitation
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 5 Interpréteur de commande, Bourne shell,
Systèmes d'exploitations Les redirections d'entrées/sorties GRARI Mounir ESTO Année 2011.
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Systèmes d'exploitations GRARI Mounir ESTO Année 2011.
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
Section XI Traitement de fichiers
Version 2007Administration système Linux Francis Rogard 1 SYSTEME DEXPLOITATION LINUX La ligne de commandes.
Gestion de Fichiers Concepts Fondamentaux et Fichiers dEnregistrements.
Système d’exploitation
FICHIERS.
Les fichiers binaires en C++
FICHIERS : Définition : Algorithme général:
Les fichiers indexés (Les B-arbres)
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
IFT Structures de données
SEANCE 10 Python Entrée et sortie de fichiers Lycée Louis Vincent Lundi 20 janvier
1 GPA435 Systèmes dexploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D., ing. Chapitre 4 Syntaxe des commandes, documentation standard,
Gestion de Fichiers Tri Interne Efficace et Tri Externe.
IFT 6800 Atelier en Technologies d’information
Les Fichiers.
COURS DE PROGRAMMATION ORIENTEE OBJET :
CSI2520 Ecriture sur l'écran ou dans un fichier Lecture à partir du clavier ou dun fichier Affichage de termes : *write(1+2) affiche 1+2 *write(X). affiche.
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Structures de données IFT-2000 Abder Alikacem Semaine 12 (2 ième partie) Les B-arbres Département d’informatique et de génie logiciel Édition septembre.
Les fichiers texte en C++
1 GPA435 Systèmes d’exploitation et programmation de système Copyright, 2000 © Tony Wong, Ph.D. Chapitre 8 Filtres UNIX.
Utilisation avancée de linux
Structures des données
Jean-Michel ILIE - novembre SIL - module M12 Programmation Internet en PHP SIL module M12 Jean-Michel Ilié IUT Paris 5 - département informatique.
Création et présentation d’un tableau avec Word 2007
PHP 3° PARTIE : GESTION DE FICHIERS ET DE REPERTOIRES
Mémoire périphérique Stockage primaire: Mémoire principale (RAM)
1 FICHIERS. 2 Les Fichiers  Les "entrées-sorties conversationnelles" échangent des informations entre le programme et l'utilisateur.  Le terme de fichier.
Un survol du language C.
Labo 4 : Les structures et les entrées et sorties
CEG3585/CEG3555 Tutorat 2 Hi ver 2013.
Système d’exploitation 2 Unix User
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Maria Malek - EISTI - CPI11 Présentation d’UNIX –1969, laboratoire Bell –Systèmes multi-tâches multi-utilisateurs –Architecture Le noyau –Gestion de la.
Unix Raymond Ripp.
Finder => Application => Utilitaires => Terminal Editor:pico Touches –Finder=>Applic.=> Utili. => Touches –~: Alt+N –|: Shift+Alt+N –[: Shift+ Alt+5 –{:
Les fichiers 1ère partie
Systèmes d’exploitation
Les variables fichiers. Le type fichier On manipule les fichiers par l’intermédiaire de structures FILE décrites dans stdio.h FILE *monFichier; –Nom physique.
Elaboré par Ahmed BESSAIDI
8PRO107 Éléments de programmation Les adresses et les pointeurs.
FORMATION Unix/Linux CHAPITRE 3: Commandes De Base.
1 PHP 5 Notions fondamentales (niveau 1 cours #3) Formation continue – Cégep de Sainte-Foy François G Couillard.
Algorithmique et langage C
INFO 2014 Fichiers et base de données Philippe Fournier-Viger Département d’informatique, U.de Moncton Bureau D216,
Plan… -Introduction et motivations : -Qu'est-ce que le traitement de fichiers ? -Terminologie et définitions fondamentales des structures de fichiers :
Informatique 2A Langage C 4ème séance
Accès aux fichiers en C.
Transcription de la présentation:

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

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

Ouverture de fichiers Une fois que l’identificateur du fichier logique est connecté à un fichier physique ou à un périphérique, il est nécessaire de déclarer ce que l’on 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.

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 d’ouverture. Le mode peut être: “r”, “w”, “a”, “r+”, “w+”, “a+”.

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 l’operateur “|” (“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.

Fichier logique vs. fichier physique Fichier Physique: collection d’octets 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 Lorsqu’un programme veut utiliser un fichier particulier, “data”, le système d’exploitation 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.

Fichier logique vs. physique: C et C++ En C, a fichier logique est déclaré comme suit: FILE *outfile; En C++, c’est 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.

Fermeture de fichiers Permet au nom logique du fichier d’être utilisé par un autre fichier physique (c’est 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 d’exploitation (à moins que le programme ait été anormalement interrompu). En C: fclose(outfile); En C++: outfile.close();

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é d’information arrivant du fichier (le nombre d’octets -- MBs)

Lecture en C char c; // un charactère Argument de fread: 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

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.

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 d’octets qui seront écrits dans le fichier

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

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

Détection de la fin d’un 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 ...

Recherche La lecture n’est pas confinée un processus séquentiel: un saut peut être fait à des locations spécifiques dans le fichier ou jusqu’au bout du fichier afin d’y ajouter (“append”) de l’information. Un déplacement direct jusqu’à une position spécifique dans un fichier s’appelle 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.

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

Programme – version C++ #include <fstream.h> 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();

Caractères spéciaux Parfois, le système d’exploitation 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.

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

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

La structure du répertoire de l’Unix (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é s’appelle 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”).

Péripheriques et fichiers logiques Unix a une vue très générale de ce qu’est un fichier: pour Unix, un fichier est une séquence d’octets 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 d’un 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.

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 d’erreur est écrit dans ce fichier

Redirection et “pipes” d’entrée/sortie < nom_de_fichier -- rediriger stdin dans “nom_de_fichier” > nom_de_fichier -- rediriger stdout dans Example: a.out < mon_entrée > ma_sortie Programme1 | Programme2 -- prend le stdout de Programme1 et l’utilise comme stdin pour Programme2 Example: list | sort

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é