|
Site |
Cours VB.net |
|
|
|
Les 'Stream'. |
|
|
Utiliser les "Stream".
Le Stream (flux, torrent, courant) est une notion générale, c'est un flux de données provenant ou allant vers un fichier, un port, une connexion TCP/IP...
Ici, par exemple, on va utiliser un Stream pour lire ou écrire dans un fichier.
L'accès est séquentiel: les données sont traitées du début à la fin du fichier.
Pour écrire dans un fichier texte:
Il faut instancier un objet de la classe StreamWriter . On écrit avec Write ou WriteLine.(ajoute un saut de ligne) Enfin on ferme avec Close.
On peut instancier avec le constructeur de la classe StreamWriter et avec New, ou par la Classe File.
Dim SW As New StreamWriter ("MonFichier.txt") ' crée ou si existe écrase
Il existe une surcharge permettant de ne pas écraser mais d'ajouter à la fin du fichier:
Dim SW As New StreamWriter ("MonFichier.txt", True) ' crée ou si existe ajoute
Avec la classe File:
Dim SW As StreamWriter=File.CreateText ("MonFichier.txt") ' crée ou si existe écrase
Dim SW As StreamWriter = File.AppendText("MonFichier.txt") ' crée ou si existe ajoute
Ensuite pour écrire 2 lignes:
SW.WriteLine ("Bonjour")
SW.WriteLine ("Monsieur")
Enfin on ferme:
SW.Close()
Pour lire dans un fichier Texte:
Il faut instancier un objet de la classe StreamReader. On lit avec Read (un nombre d'octet) ReadLine (une ligne) ReadToEnd (de la position courante jusqu'à la fin). Enfin on ferme avec Close.
Avec le constructeur de la Classe Stream Reader:
Dim SR As New StreamReader ("MonFichier.txt")
Avec la Classe File:
Dim SR As StreamReader=File.OpenText ("MonFichier.txt") '
Comment lire chaque ligne du fichier et s'arrêter à la fin?
En effet on ne sait pas habituellement combien le fichier contient de ligne, si le fichier contient 2 lignes il faut en lire 2 et s'arrêter sinon on tente de lire après la fin du fichier et cela déclenche une erreur.
3 solutions:
1-Utiliser ReadToEnd qui lit en bloc jusqu'à la fin.
2-Avant ReadLine mettre un Try: quand l'erreur 'fin de fichier' survient elle est interceptée par Catch qui sort du cycle de lecture et ferme le fichier.
3-Utiliser Peek qui lit dans le fichier un caractère mais sans modifier la position courante de lecture.
La particularité de Peek est de retourner -1 s'il n'y a plus de caractère à lire sans déclencher d'erreur, d'exception.
La troisième solution est la plus générale et la plus élégante:
Do Until SR.Peek=-1
Ligne=SR.ReadLine()
Loop
Enfin on ferme:
SR.Close()
Lexique anglais=>Français:
Stream = flux, torrent, courant.
|
|
|
|
|