Chapitre n°4: Les Fichiers En VB.Net
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