Gestion de Fichiers - PowerPoint PPT Presentation

About This Presentation
Title:

Gestion de Fichiers

Description:

Une fois que l'identificateur du fichier logique est connect un fichier ... Sa valeur est calcul e en appliquant l'operateur '|' ('bitweise or') sur des constantes ... – PowerPoint PPT presentation

Number of Views:87
Avg rating:3.0/5.0
Slides: 27
Provided by: nat1151
Category:

less

Transcript and Presenter's Notes

Title: Gestion de Fichiers


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

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
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
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
Ouverture de fichiers en C
  • fstream outfile
  • Outfile.open (monfichier.txt,iosout)
  • 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 iosin, iosout,
    iosapp, iostrunc, iosnocreate,
    iosnoreplace, iosbinary, etc.

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
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
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
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
Lecture en C
  • char c // un charactère
  • char a100 // 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
Lecture en C
  • char c // un charactère
  • char a100 // un array avec 100 charactères
  • fstream infile
  • infile.open("monfichier,iosin)
  • infile gtgt 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
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
Ecriture en C
  • char c char a100
  • FILE outfile
  • outfile fopen("mynew.txt","w")
  • / Nous omettons dinitialiser c et a /
  • fwrite(c,1,1,outfile)
  • fwrite(a,1,10,outfile)

14
Ecriture en C
  • char c char a100
  • fstream outfile
  • outfile.open("mynew.txt",iosout)
  • // Nous omettons dinitialiser c et a
  • outfile ltlt c
  • outfile.write(c,1)
  • outfile.write(a,10)

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 (i0) // true si le fichier est à la
    fin
  • .
  • En C
  • infile gtgt c // essaie de lire
  • if (infile.fail()) // true si le fichier
    est à la fin
  • ...

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
Programme manipulant des fichiers
  • Exemple de programme pour afficher le contenu
    dun fichier sur lécran version C
  • include ltstdio.hgt
  • 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
Programme version C
  • include ltfstream.hgt
  • main()
  • char ch
  • fstream infile // declare un nom logique
  • infile.open("A.txt",iosin) // attache le
    nom logique a un nom physique
  • infile.unsetf(iosskipws) // flag pour
    inlure les blanks dans la lecture
  • infile gtgt ch
  • while (! infile.fail())
  • cout ltlt ch
  • infile gtgt ch
  • infile.close()

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
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.
  • ltCarriage-ReturngtltLine-Feedgt sont ajoutés à la
    fin de chaque lignes de fichiers MS-DOS.
  • ltCarriage-Returngt est effacé et remplacé par le
    nombre de caractères par ligne de texte dans les
    fichiers VMS.

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
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
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
stdout, stdin, stderr
  • stdout ? console
  • fwrite(ch, 1, 1, stdout) ou
  • cout ltlt ch
  • stdin ? clavier
  • fread(ch, 1, 1, stdin) ou
  • cin gtgt ch
  • stderr ? erreur standard (en fait, la console)
  • Lorsque le compilateur détecte une erreur, le
    message derreur est écrit dans ce fichier

25
Redirection et pipes dentrée/sortie
  • lt nom_de_fichier -- rediriger stdin dans

  • nom_de_fichier
  • gt nom_de_fichier -- rediriger stdout dans

  • nom_de_fichier
  • Example a.out lt mon_entrée gt ma_sortie
  • Programme1 Programme2 -- prend le stdout
  • de Programme1 et
    lutilise
  • comme stdin pour
    Programme2
  • Example list sort

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é
Write a Comment
User Comments (0)
About PowerShow.com