Chapitre n°4: Les Fichiers En VB -...

Preview:

Citation preview

Chapitre n°4:Les Fichiers En VB.NetLes Fichiers En VB.Net

Introduction

� Dans ce chapitre, nous abordons un point

important du Framework : l'utilisation des flux et la

gestion du système de fichiers.

� Un fichier est un support de stockage� Un fichier est un support de stockage

permanant (à l’opposition des simples variables qui

sont volatiles) permettant de sauvegarder une

large quantité de données .

� Dans VB.net, il y a une hiérarchie de stockage

des données allant du bit vers le fichier.

L’hiérarchie de Données

1ère LFSG

3ème LFIG

2ème LFIG

1ère LFIG

Fichier

2ème LFSG

1ère LFSG

1ère LFIG Enregistrement

Judy Champ ou attribut

01001010 byte (ASCII)

1 bit

Operations sur les fichiers

�La création d’un nouveau fichier

�Le déplacement vers un autre emplacement

�La création d’une copie

�Le remplacement par un autre fichier�Le remplacement par un autre fichier

�La lecture de son contenu

�L’écriture dans un fichier

�La suppression d’un fichier

4

L’espace de noms System.IO

� Toutes Les classes abordées se situent dansl'espace de nom System.IO.

� Nous abordons précisément :

�La classe FileStream�La classe FileStream

�La classe StreamReader

�La classe StreamWriter

�La classe BinaryReader

�La classe BinaryWriter

�La classe FileStream : permet de créer,d’ouvrir des fichiers et de préciser le typed’accès et le mode de manipulation de cesfichiers.

L’espace de noms System.IO

�La classe StreamReader : offre des méthodespermettant la lecture des flux des données àpartir d’un fichier texte.

�La classe StreamWriter : offre des méthodespermettant l’écriture des flux des donnéesdans un fichier texte.

6

�La classe BinaryReader : présente desméthodes permettant la lecture de donnéesbinaires à partir d’un fichier binaire.

�La classe BinaryWriter : présente des

L’espace de noms System.IO

�La classe BinaryWriter : présente desméthodes permettant l’écriture de donnéesbinaires dans un fichier binaire.

�Un flux est un canal permettant l’accès à unobjet (dans notre cas l’objet est un fichier).

7

Lecture d’un fichier : les étapes

�Ouvrir un flux vers le fichier, en utilisant laclasse FileStream. Ceci permet de préciser lemode de manipulation via l’énumérationFileMode (créer ou ouvrir) et le type d’accèsvia l’énumération FileAccess (lecture ouvia l’énumération FileAccess (lecture oulecture/écriture),

�Associer un objet de lecture pour le flux viaStreamReader ou BinaryReader,

�Lecture du contenu du fichier,

�Fermeture du flux.

8

Écriture dans fichier : les étapes

�Ouvrir un flux vers le fichier, en utilisant de mêmela classe FileStream. Ceci permet de préciser lemode de manipulation (créer, ouvrir, Ajout,…) etle type d’accès (écriture ou lecture/écriture),

�Associer un objet d’écriture au flux via�Associer un objet d’écriture au flux viaStreamWriter ou BinaryWriter,

�Écriture dans le fichier,

�Forcer l’écriture dans le fichier via la méthodeflush(),

�Fermeture du flux.9

Exemple : Ajout à la suite d’un fichier

Dim fs As New FileStream("Ajout.txt", FileMode.Append, FileAccess.Write)

Dim sw As New StreamWriter(fs)

sw.WriteLine(TextBox1.Text & " "& sw.WriteLine(TextBox1.Text & " "& ComboBox1.SelectedItem.ToString & " " & TextBox2.Text & " " & CInt(ComboBox2.SelectedItem.ToString) & " " & TextBox3.Text)

sw.Flush() ‘Forcer l’ecriture du contenu du tampon

sw.Close()

fs.Close()

10

�Cette classe donne la possibilité de lire, écrire,ouvrir et fermer des fichiers.

�Elle possède 9 constructeurs dont le plus utiliséest :

Création d’un fichier séquentiel : La Classe FileStream

est :

FileStream(String, FileMode, FileAccess)

�Le premier paramètre précise l’emplacementdu fichier.

�Le deuxième est une énumération donnant lemode d’utilisation

�Le troisième précise la permission.

FileMode :C’est une énumération dont les valeurs possibles sont :�FileMode.Append: Si le fichier existe, les donnéessont alors ajoutés à la suite de celles existantes. Si lefichier n’existe pas il sera crée avant d’y ajouter lesdonnées.

Création d’un fichier séquentiel : La Classe FileStream

fichier n’existe pas il sera crée avant d’y ajouter lesdonnées.

�FileMode.Create: permet de créer un fichier. Si cedernier existe, il sera détruit et remplacer par unnouveau fichier de même nom.

�FileMode.CreateNew: permet de créer un fichier. Sice dernier existe, alors une erreur est retournée.

�FileMode.Open: permet d’ouvrir un fichier. Sice dernier n’existe pas, alors une erreur estretournée.

�FileMode.OpenOrCreate: Si le fichier existe, ilsera ouvert sinon il sera crée.

Création d’un fichier séquentiel : La Classe FileStream

�FileMode.OpenOrCreate: Si le fichier existe, ilsera ouvert sinon il sera crée.

�FileMode.Truncate: permet de supprimer lecontenu fichier et de donner la possibilité d’yécrire de nouveau. Si ce dernier n’existe pas,alors une erreur est retournée.

13

FileAccessUne énumération permettant de préciser le typed’accès au fichier dont les membres sont :

�FileAccess.Write: l’ajout de nouvelles donnéesest permis.

Création d’un fichier séquentiel : La Classe FileStream

est permis.

�FileAccess.Read: le contenu du fichier peutêtre lu.

�FileAccess.ReadWrite: lecture et écrituresimultanée.

La classe StreamReader

1. Declarer un objet FileStream en passant le chemin d’accès au

fichier :

Dim fs As New FileStream("C:\Employee.txt", FileMode.Open, FileAccess.Read)

2. Créer un objet StreamReader en lui passant l’objet FileStreamdéjà crée :

Dim sr As New StreamReader(fs)Dim sr As New StreamReader(fs)3. Exemple: lecture du contenu du fichier et affectation de ses

lignes à un RichTextBox (rtBox)

While sr.Peek() > -1rtBox.Text &= sr.ReadLine()

End While4. Fermeture du fichier:

sr.Close() ‘fermeture du fichierfs.Close() ‘fermeture du flux

�La classe StreamReader propose plusieursstratégies de lecture:

�Ligne par ligne � avec la méthode ReadLine.

La classe StreamReader

�Ligne par ligne � avec la méthode ReadLine.

�Le fichier en sa totalité � avec la méthodeReadToEnd.

�Caractère par caractère � avec la méthodeRead.

16

Ligne par ligne :

�La méthode ReadLine permet la lecture d’une ligne

d’un fichier texte.

La classe StreamReader

d’un fichier texte.

�La méthode Peek permet de dire si on a atteint la fin du fichier ou non.

�Peek retourne -1 si c’est la fin du fichier.

17

�Tout Le Fichier :

On peut lire tout le contenu du fichier avec la méthodeReadToEnd.

Cette méthode retourne le contenu du fichier dés la positioncourante jusqu’à la fin du fichier.

La classe StreamReader

courante jusqu’à la fin du fichier.

�Caractère par caractère:Si on veut lire le fichier caractère par caractère, on utilise la méthode Read. Cette méthode retourne un entier représentant le code du caractère lu.

18

� L’exemple ci-dessous lit le fichier caractère par caractère :

Dim x As IntegerDim ch As String

Dim fs As New FileStream("C:\Employee.txt", FileMode.Open, FileAccess.Read)

La classe StreamReader : Exemple

FileAccess.Read)

Dim sr As New StreamReader(fs) While sr.Peek <> -1

x = sr.Read()ch = Chr(x)

Console.write(ch)End While

19

1. Declarer un objet FileStream en passant le chemin d’accès au

fichier :

Dim fs As New FileStream("file.txt", FileMode.Create, FileAccess.Write)

2. Créer un objet StreamReader en lui passant l’objet FileStream

déjà crée :

Dim sw As New StreamWriter(fs)

La classe StreamWriter

Dim sw As New StreamWriter(fs)3. Pour écrire dans le fichier, on peut utiliser les méthodes write et

writeLine:

sw.WriteLine(“Une première phrase.")sw.WriteLine(“Une deuxième phrase.")

4. Close the file

sr.Close() ‘fermeture du fichierfs.Close() ‘fermeture du flux

La classe BinaryReader

�Cette classe permet de lire des donnéesbinaires ou des flux d’objets.

�Elle dispose d’un certains nombre deméthodes comme :

21

méthodes comme :

�ReadString : la lecture d’une chaine de caractères

�ReadBoolean : la lecture d’un Boolean

�ReadInt32 : La lecture d’un Integer

�ReadDouble : La lecture d’un réel

�…

Try

br = New BinaryReader(New FileStream("mydata", FileMode.Open))

i = br.ReadInt32()

Console.WriteLine("Donnée de type Integer : {0}", i)

d = br.ReadDouble()

Console.WriteLine("Donnée de type Double : {0}", d)

b = br.ReadBoolean()

La classe BinaryReader : Exemple

b = br.ReadBoolean()

Console.WriteLine("Donnée de type Boolean : {0}", b)

s = br.ReadString()

Console.WriteLine("Donnée de type String : {0}", s)

Catch e As IOException

Console.WriteLine(e.Message + vbCrlf+ " La lecture du fichier est impossible.")

End Try

br.Close()

22

La classe BinaryWriter

�Cette classe permet l’écriture des donnéesbinaires ou des flux d’objets.

�Elle dispose d’un certains nombre de méthodescomme :

23

comme :

�Write : l’écriture des données dans le fichier.

�Seek : Permet de déplacer le curseur dans le fichier.

�Flush : vide le tampon dans le fichier binaire.

�Close : La fermeture du flux.

�…

La classe BinaryWriter : Exemple

Dim wS As FileStream

Try

wS = New FileStream("c:\Exemple1.dat", FileMode.Create)

Dim wB As New BinaryWriter(wS)

For each x in lstBox1.Item

24

For each x in lstBox1.Item

wB.Write (x)

Next

wB.Close()

Catch ex As ExceptionMsgBox(ex.ToString)

End Try

Exemple DétailléExemple Détaillé

25

Code SourceCode Source

27

TestsTests

34

Recommended