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

⚡ Rezumat inteligent

Fluxul AC# este un strat între aplicația dvs. și un fișier care vă permite să citiți sau să scrieți date în bucăți mici. Aici veți afla cum funcționează StreamReader și StreamWriter muncă, cu exemple și principalele tipuri de fluxuri.

  • ???? Ce este: Un flux este un strat intermediar între aplicația ta și un fișier.
  • 📖 Cititor de flux: StreamReader citește textul dintr-un fișier, câte o linie sau un fragment pe rând.
  • ✍️ PârâuWriter: PârâuWriter scrie text într-un fișier printr-un flux.
  • 🧩 Tipuri de fluxuri: FileStream, MemoryStream și BufferToate elementele edStream derivă din clasa Stream.
  • 🤖 Ajutor AI: Instrumentele de inteligență artificială precum GitHub Copilot generează instantaneu cod de flux C#.

Cititor de flux C# și Writer

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.

Tipuri de fluxuri în C#

Toate clasele de flux din C# derivă din abstract Stream clasa în System.IO spațiu de nume. Fiecare tip vizează o sursă de date diferită, dar are aceleași metode de citire și scriere. Cele mai frecvent utilizate fluxuri sunt enumerate mai jos.

  • FileStream citește și scrie în fișiere de pe disc, câte un octet sau bloc pe rând.
  • MemoryStream stochează datele în memorie în loc de un fișier, ceea ce este util pentru bufferele temporare.
  • BufferedStream încapsulează un alt flux pentru a reduce numărul de operațiuni lente pe disc sau în rețea.
  • NetworkStream trimite și primește date printr-un socket de rețea.

Pentru lucrul cu text, C# oferă StreamReader și StreamWriter clase ajutătoare, care încapsulează un flux și sunt tratate în secțiunile următoare.

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

Code Explicaţie:-

  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ă.

Pârâu 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.

Pârâu 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();
  }
 }
}

Code Explicaţie:-

  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 în flux 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: -

Pârâu Writer

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

Întrebări frecvente

Un flux este un strat intermediar între o aplicație și un fișier. Acesta împarte fișierele mari în bucăți mai mici, astfel încât datele să poată fi citite sau scrise fără a încărca întregul fișier în memorie.

StreamReader citește date text dintr-un fișier printr-un flux. File.OpenText returnează un StreamReader, iar metoda sa ReadLine citește fișierul linie cu linie.

PârâuWriter scrie date text într-un fișier printr-un flux. File.AppendText returnează un fluxWriter, iar metoda sa WriteLine trimite fiecare linie către fișier.

Fluxurile comune includ FileStream pentru fișiere, MemoryStream pentru date în memorie, BufferedStream pentru buffering și NetworkStream pentru socketuri. Toate derivă din abstracClasa t Stream.

FileStream citește și scrie octeți bruti într-un fișier, în timp ce StreamReader încadrează un flux pentru a citi textul sub formă de caractere și linii. StreamReader este mai ușor de utilizat pentru fișierele text.

Asistenții AI precum GitHub Copilot completează automat StreamReader și StreamWriter cod, adăugarea de blocuri using pentru eliminare și generarea de bucle de citire a fișierelor dintr-un comentariu scurt.

Da. Instrumentele bazate pe inteligență artificială generează metode de citire și scriere a fluxurilor, sugerează stocarea temporară pentru fișiere mari și adaugă instrucțiuni using, astfel încât fluxurile să fie închise în siguranță.

O instrucțiune using închide și elimină automat fluxul când blocul se termină, chiar dacă apare o eroare. Aceasta eliberează identificatorul fișierului și previne pierderile de resurse.

Rezumați această postare cu: