Tutoriel Stream en C# : StreamReader et StreamWriter [Exemple]

Qu’est-ce que le flux C# ?

Dans les opérations sur les fichiers C#, les flux sont normalement utilisés pour lire et écrire dans des fichiers. Un flux est une couche supplémentaire créée entre une application et un fichier. Le flux est utilisé pour garantir des opérations de lecture et d’écriture fluides dans le fichier.

Les flux sont normalement utilisés lors de la lecture de données à partir de fichiers volumineux. En utilisant des flux, les données des fichiers volumineux sont décomposées en petits morceaux et envoyées au flux. Ces morceaux de données peuvent ensuite être lus depuis l’application.

La raison pour laquelle il est divisé en petits morceaux est l'impact sur les performances de la lecture d'un gros fichier en une seule fois. Si vous deviez lire les données d'un fichier de 100 Mo d'un seul coup, par exemple, votre application pourrait tout simplement se bloquer et devenir instable. La meilleure approche consiste alors à utiliser des flux pour diviser le fichier en morceaux gérables.

Ainsi, lorsqu'une opération d'écriture est effectuée sur un fichier, les données à écrire sont d'abord écrites dans le flux. À partir du flux, les données sont ensuite écrites dans le fichier. Il en va de même pour l'opération de lecture. Lors de l'opération de lecture, les données sont d'abord transférées du fichier vers le flux. Les données sont ensuite lues depuis l'application via le flux. Regardons un exemple de la façon dont nous pouvons lire et écrire à l'aide de flux.

Lecteur de flux

Le lecteur de flux est utilisé pour lire les données d'un fichier à l'aide de flux. Les données du fichier sont d'abord lues dans le flux. Ensuite, l'application lit les données du flux.

Pour notre exemple, nous supposerons que nous avons un fichier dans le lecteur D appelé Exemple.txt. Le fichier sera un simple fichier texte et comportera 2 lignes comme indiqué ci-dessous

  • Guru99 – .Net
  • Guru99 -C#

Pour notre exemple, nous allons créer une application console simple et travailler avec des flux de fichiers

Regardons un exemple de la façon dont nous pouvons utiliser les flux pour lire les données d'un fichier. Entrez le code ci-dessous dans le fichier program.cs.

Lecteur de flux

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";

    using (StreamReader sr = File.OpenText(path))
    {
     String s = "";

     while ((s = sr.ReadLine()) != null)
     {
      Console.WriteLine(s);
     }
    }
   Console.ReadKey();
  }
 }
}

Explication du code : -

  1. Tout d’abord, nous déclarons un objet lecteur de flux. L'objet stream reader est utilisé en C# pour définir un flux du fichier vers l'application. Les données seront poussées du fichier vers le flux chaque fois que des données seront lues à partir du fichier. Le fichier.OpenText permet d'ouvrir le fichier « Exemple.txt » en mode lecture seule. Le gestionnaire du fichier est ensuite envoyé à l'objet lecteur de flux.
  2. Ensuite, nous définissons une variable temporaire 's' qui sera utilisée pour lire toutes les données du fichier.
  3. Nous utilisons ensuite la méthode de lecture de flux ReadLine pour lire chaque ligne du tampon de flux. Quand nous effectuons cela la vente au détail h/, chaque ligne sera d'abord transférée du fichier vers le tampon. Ensuite, la ligne de chaîne sera transférée du tampon vers la variable 's'. Nous écrivons ensuite le contenu de la chaîne 's' dans la console.

Lorsque le code ci-dessus est défini et que le projet est exécuté en utilisant Visual Studio, vous obtiendrez le résultat ci-dessous.

Production:-

Lecteur de flux

À partir de la sortie, vous pouvez voir que Stream Reader a lu les deux lignes du fichier. Enfin, les lignes de la chaîne lues dans le flux étaient envoyées à la console.

Écrivain de flux

Le rédacteur de flux est utilisé pour écrire des données dans un fichier à l’aide de flux. Les données de l'application sont d'abord écrites dans le flux. Après cela, le flux écrit les données dans le fichier. Regardons un exemple de la façon dont nous pouvons utiliser des flux pour écrire des données à partir d'un fichier. Entrez le code ci-dessous dans le fichier program.cs.

Écrivain de flux

using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
  class Tutorial
  {
   static void Main(string[] args)
   {
    String path = @"D:\Example.txt";
    
    using (StreamWriter sr = File.AppendText(path))
    {
     sr.WriteLine("Guru99 - ASP.Net");
     sr.Close();

     Console.WriteLine(File.ReadAllText(path));
    }
    Console.ReadKey();
  }
 }
}

Explication du code : -

  1. Tout d’abord, nous déclarons un objet streamwriter. L'objet streamwriter est utilisé en C# pour définir un flux. Le flux est ensuite utilisé pour écrire les données de l'application dans le fichier. Les données seront poussées de l'application vers le flux chaque fois que des données doivent être écrites. La commande File.AppendText est utilisée pour ouvrir le fichier « Example.txt » en mode ajout. Le gestionnaire du fichier est ensuite envoyé à l’objet streamwriter.
  2. Nous utilisons la méthode d'écriture de flux Writeline pour écrire la ligne « Guru99 – ASP.Net » dans le flux. A partir du flux, la ligne sera ensuite écrite dans le fichier.
  3. Nous fermons ensuite le streamwriter après avoir écrit dans le fichier. C'est normalement une bonne pratique de fermer les gestionnaires de fichiers lorsque le fichier n'est plus nécessaire à des fins d'écriture.
  4. Enfin, nous lisons à nouveau le contenu du fichier et l'écrivons dans le journal de la console. Il s'agit de vérifier si la ligne a été écrite dans le fichier.

Lorsque le code ci-dessus est défini et que le projet est exécuté à l'aide de Visual Studio, vous obtiendrez le résultat ci-dessous.

Production:-

Écrivain de flux

À partir du résultat, vous pouvez voir que la ligne « Guru99 – ASP.Net » a été ajoutée avec succès au fichier. Les 3 lignes de texte sont visibles dans la console.

Résumé

  • Les flux sont utilisés comme niveau intermédiaire entre l'application et le fichier.
  • Un StreamReader est utilisé chaque fois que des données doivent être lues à partir d'un fichier.
  • Un Streamwriter est utilisé chaque fois que des données doivent être écrites dans un fichier.