Tutorial în flux în C#: StreamReader și StreamWriter [Exemplu]

Ce este C# Stream?

În operațiunile cu fișiere C#, în mod normal, fluxurile sunt folosite pentru a citi și scrie în fișiere. Un flux este un strat suplimentar creat între o aplicație și un fișier. Fluxul este folosit pentru a asigura operațiuni de citire și scriere fluide în fișier.

Fluxurile sunt utilizate în mod normal la citirea datelor din fișiere mari. Prin utilizarea fluxurilor, datele din fișierele mari sunt împărțite în bucăți mici și trimise în flux. Aceste bucăți de date pot fi apoi citite din aplicație.

Motivul împărțirii acestuia în bucăți mici este din cauza impactului asupra performanței citirii unui fișier mare într-o singură lovitură. Dacă ar fi să citiți datele de la, de exemplu, un fișier de 100 MB dintr-o singură dată, aplicația dvs. s-ar putea bloca și deveni instabilă. Cea mai bună abordare este atunci să folosiți fluxuri pentru a împărți fișierul în bucăți gestionabile.

Deci, atunci când o operație de scriere este efectuată în fișier, datele care trebuie scrise sunt mai întâi scrise în flux. Din flux, datele sunt apoi scrise în fișier. Același lucru este valabil și pentru operația de citire. În operația de citire, datele sunt mai întâi transferate din fișier în flux. Datele sunt apoi citite din aplicație prin flux. Să ne uităm la un exemplu despre cum putem citi și scrie folosind fluxuri.

Cititor de fluxuri

Cititorul de flux este folosit pentru a citi date dintr-un fișier folosind fluxuri. Datele din fișier sunt citite mai întâi în flux. După aceea, aplicația citește datele din flux.

Pentru exemplul nostru, vom presupune că avem un fișier în unitatea D numit Example.txt. Fișierul va fi un fișier text simplu și va avea 2 linii, așa cum se arată mai jos

  • Guru99 – .Net
  • Guru99 -C#

Pentru exemplul nostru, vom crea o aplicație Console simplă și vom lucra cu fluxuri de fișiere

Să ne uităm la un exemplu despre cum putem folosi fluxuri pentru citirea datelor dintr-un fișier. Introduceți codul de mai jos în fișierul program.cs.

Cititor de fluxuri

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();
  }
 }
}

Explicația codului: -

  1. În primul rând, declarăm un obiect cititor de flux. Obiectul cititor de flux este folosit în C# pentru a defini un flux de la fișier la aplicație. Datele vor fi transferate din fișier în flux ori de câte ori sunt citite date din fișier. Fișierul.OpenText este folosit pentru a deschide fișierul „Example.txt” în modul numai citire. Handler-ul fișierului este apoi trimis la obiectul stream reader.
  2. În continuare, definim o variabilă temporară „s” care va fi folosită pentru a citi toate datele din fișier.
  3. Apoi folosim metoda cititorului de flux ReadLine pentru a citi fiecare linie din bufferul de flux. Când efectuam asta operaţie, fiecare linie va fi mai întâi transferată din fișier în buffer. Apoi linia șirului de caractere va fi transferată din buffer în variabila „s”. Apoi scriem conținutul șirului „s” pe consolă.

Când codul de mai sus este setat și proiectul este rulat folosind Visual Studio, veți obține rezultatul de mai jos.

Ieșire: -

Cititor de fluxuri

Din rezultat, puteți vedea că Stream Reader a citit ambele linii din fișier. În cele din urmă, liniile șirului citit din flux au fost trimise către Consolă.

Stream Writer

Scriitorul de flux este folosit pentru a scrie date într-un fișier folosind fluxuri. Datele din aplicație sunt scrise mai întâi în flux. După aceea, fluxul scrie datele în fișier. Să ne uităm la un exemplu despre cum putem folosi fluxuri pentru scrierea datelor dintr-un fișier. Introduceți codul de mai jos în fișierul program.cs.

Stream Writer

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();
  }
 }
}

Explicația codului: -

  1. În primul rând, declarăm un obiect stream writer. Obiectul stream writer este folosit în C# pentru a defini un flux. Fluxul este apoi folosit pentru a scrie date din aplicație în fișier. Datele vor fi transmise din aplicație în flux ori de câte ori trebuie scrise date. Comanda File.AppendText este folosită pentru a deschide fișierul „Example.txt” într-un mod de adăugare. Handler-ul fișierului este apoi trimis la obiectul stream writer.
  2. Folosim metoda de scriere a fluxului Writeline pentru a scrie linia „Guru99 – ASP.Net” în flux. Din flux, linia va fi apoi scrisă în fișier.
  3. Închidem apoi stream writer-ul după ce scriem în fișier. În mod normal, este o practică bună să închideți manevrele de fișiere atunci când fișierul nu mai este necesar pentru scris.
  4. În cele din urmă, citim din nou conținutul fișierului și îl scriem în jurnalul consolei. Aceasta este pentru a verifica dacă linia a fost scrisă în fișier.

Când codul de mai sus este setat și proiectul este rulat folosind Visual Studio, veți obține rezultatul de mai jos.

Ieșire: -

Stream Writer

Din rezultat, puteți vedea că linia „Guru99 – ASP.Net” a fost adăugată cu succes la fișier. Toate cele 3 rânduri de text pot fi văzute în consolă.

Rezumat

  • Fluxurile sunt folosite ca nivel intermediar între aplicație și fișier.
  • Un StreamReader este utilizat ori de câte ori este necesar ca datele să fie citite dintr-un fișier.
  • Un Streamwriter este utilizat ori de câte ori trebuie scrise date într-un fișier.