Striimimine C#-s: StreamReader ja StreamWriter [Näide]

⚡ Nutikas kokkuvõte

AC# voog on teie rakenduse ja faili vaheline kiht, mis võimaldab teil andmeid väikeste tükkidena lugeda või kirjutada. Siit saate teada, kuidas StreamReader ja Stream...Writer töö koos näidete ja peamiste voogude tüüpidega.

  • ???? Mis see on: Voog on vahekiht teie rakenduse ja faili vahel.
  • ???? Streamilugeja: StreamReader loeb failist teksti rida või tükki haaval.
  • ✍️ OjaWriter: OjaWriter kirjutab teksti faili voo kaudu.
  • 🧩 Voo tüübid: FileStream, MemoryStream ja BufferKõik edStream tulenevad Stream klassist.
  • 🤖 Tehisintellekti abi: Tehisintellekti tööriistad, näiteks GitHub Copilot, genereerivad C# voogedastuskoodi koheselt.

C# voogude lugeja ja Writer

Mis on C# Stream?

C#-failitoimingutes kasutatakse failide lugemiseks ja kirjutamiseks tavaliselt vooge. Voog on rakenduse ja faili vahele loodud lisakiht. Voogu kasutatakse faili sujuva lugemise ja kirjutamise tagamiseks.

Vooge kasutatakse tavaliselt suurte failide andmete lugemisel. Vooge kasutades jagatakse suurtest failidest andmed väikesteks tükkideks ja saadetakse voogu. Neid andmetükke saab seejärel rakendusest lugeda.

Selle väikesteks tükkideks jagamise põhjuseks on suure faili ühekordse lugemise mõju jõudlusele. Kui loeksite andmeid näiteks 100 MB failist korraga, võib teie rakendus lihtsalt hanguda ja muutuda ebastabiilseks. Parim viis on siis faili hallatavateks tükkideks jaotamiseks kasutada vooge.

Nii et kui failis tehakse kirjutamisoperatsioon, kirjutatakse kirjutatavad andmed esmalt voogu. Seejärel kirjutatakse andmed voost faili. Sama kehtib ka lugemistoimingu kohta. Lugemistoimingus kantakse andmed esmalt failist voogu. Seejärel loetakse andmeid rakendusest voo kaudu. Vaatame näidet selle kohta, kuidas saame lugeda ja kirjutada vooge kasutades.

C# voogude tüübid

Kõik C# voogude klassid tulenevad abs-sttract Stream klassis System.IO nimeruum. Iga tüüp on suunatud erinevale andmeallikale, kuid jagab samu lugemis- ja kirjutamismeetodeid. Kõige sagedamini kasutatavad vood on loetletud allpool.

  • Filestream loeb ja kirjutab kettalt faile, üks bait või plokk korraga.
  • Mäluvoog salvestab andmeid faili asemel mällu, mis on kasulik ajutiste puhvrite jaoks.
  • BufferedStream mähib teise voo, et vähendada aeglaste ketta- või võrgutoimingute arvu.
  • NetworkStream saadab ja võtab vastu andmeid võrgupistikupesa kaudu.

Tekstiga töötamiseks pakub C# StreamReader ja StreamWriter abiklassid, mis mähivad voogu ja mida käsitletakse järgmistes osades.

Voolugeja

Voolugejat kasutatakse andmete lugemiseks failist voogude abil. Andmed failist loetakse esmalt voogu. Seejärel loeb rakendus voost andmeid.

Meie näite puhul eeldame, et meil on D-draivis fail nimega Example.txt. Fail on lihtne tekstifail ja sellel on 2 rida, nagu allpool näidatud

  • Guru99 – .Net
  • Guru99 -C#

Meie näites loome lihtsa konsoolirakenduse ja töötame failivoogudega

Vaatame näidet selle kohta, kuidas saame failist andmete lugemiseks kasutada vooge. Sisestage allolev kood faili program.cs.

Voolugeja

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 Selgitus:-

  1. Esiteks deklareerime voolugeja objekti. Voolugeja objekti kasutatakse C#-s voo määratlemiseks failist rakendusse. Andmed lükatakse failist voogu, kui failist andmeid loetakse. Fail.OpenText kasutatakse faili “Example.txt” avamiseks kirjutuskaitstud režiimis. Seejärel saadetakse faili töötleja voolugeja objektile.
  2. Järgmisena määratleme ajutise muutuja 's', mida kasutatakse failist kõigi andmete lugemiseks.
  3. Seejärel kasutame iga rea ​​lugemiseks voopuhvrist voolugeja meetodit ReadLine. Kui me seda teostame töö, kantakse iga rida esmalt failist puhvrisse. Seejärel kantakse stringi rida puhvrist muutujasse 's'. Seejärel kirjutame stringi "s" sisu konsooli.

Kui ülaltoodud kood on määratud ja projekti käitatakse kasutades Visual Studio, saate alloleva väljundi.

Väljund:-

Voolugeja

Väljundist näete, et Stream Reader luges failist mõlemad read. Lõpuks saadeti voost loetud stringi read konsooli.

Oja Writer

Vookirjutajat kasutatakse andmete kirjutamiseks faili voogude abil. Rakenduse andmed kirjutatakse esmalt voogu. Pärast seda kirjutab voog andmed faili. Vaatame näidet selle kohta, kuidas saame failist andmete kirjutamiseks kasutada vooge. Sisestage allolev kood faili program.cs.

Oja 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 Selgitus:-

  1. Esiteks deklareerime vookirjutaja objekti. Voo kirjutaja objekti kasutatakse C#-s voo määratlemiseks. Seejärel kasutatakse voogu andmete kirjutamiseks rakendusest faili. Andmed lükatakse rakendusest voogu, kui andmeid on vaja kirjutada. Käsku File.AppendText kasutatakse faili “Example.txt” avamiseks lisamisrežiimis. Seejärel saadetakse faili töötleja vookirjutaja objektile.
  2. Me kasutame voo kirjutamise meetodit Writeline rea „“ kirjutamiseks.Guru99 – ASP.Net” voogu. Seejärel kirjutatakse rida voost faili.
  3. Seejärel sulgeme vookirjutaja pärast faili kirjutamist. Tavaliselt on hea tava sulgeda failitöötlejad, kui faili pole kirjutamiseks enam vaja.
  4. Lõpuks loeme faili sisu uuesti läbi ja kirjutame selle konsooli logisse. Selle eesmärk on kontrollida, kas rida on faili kirjutatud.

Kui ülaltoodud kood on määratud ja projekti käitatakse Visual Studio abil, saate alloleva väljundi.

Väljund:-

Oja Writer

Väljundist näete, et rida „Guru„99 – ASP.Net” lisati faili edukalt. Kõiki kolme tekstirida on konsoolis näha.

KKK

Voog on vahekiht rakenduse ja faili vahel. See jagab suured failid väikesteks tükkideks, et andmeid saaks lugeda või kirjutada ilma kogu faili mällu laadimata.

StreamReader loeb failist tekstiandmeid voo kaudu. Fail.OpenText tagastab StreamReaderi ja selle ReadLine meetod loeb faili ridahaaval.

OjaWriter kirjutab tekstiandmed faili voo kaudu. File.AppendText tagastab vooWriterja selle WriteLine meetod saadab iga rea ​​faili.

Levinud voogude hulka kuuluvad FileStream failide jaoks, MemoryStream mälusiseste andmete jaoks, BufferedStream puhverdamiseks ja NetworkStream soklite jaoks. Kõik need tulenevad abs-sttract Voo klass.

FileStream loeb ja kirjutab faili toorbaite, samas kui StreamReader murrab voo, et lugeda teksti märkide ja ridadena. StreamReader on tekstifailide puhul lihtsam.

Tehisintellekti assistendid, näiteks GitHub Copilot, täidavad automaatselt StreamReaderi ja StreamiWriter kood, lisa plokkide kasutamine hävitamiseks ja genereeri lühikese kommentaari põhjal failide lugemise tsükleid.

Jah. Tehisintellektil põhinevad tööriistad genereerivad voogude lugemise ja kirjutamise meetodeid, soovitavad suurte failide puhverdamist ning lisavad using-lauseid, et voogud oleksid ohutult suletud.

Kasutav lause sulgeb ja kõrvaldab voo automaatselt ploki lõppedes, isegi vea ilmnemisel. See vabastab failikäepideme ja hoiab ära ressursilekked.

Võta see postitus kokku järgmiselt: