Striimaus C#:lla: StreamReader ja StreamWriter [Esimerkki]

⚡ Älykäs yhteenveto

AC#-stream on sovelluksesi ja tiedoston välinen kerros, jonka avulla voit lukea tai kirjoittaa dataa pienissä osissa. Tässä opit StreamReaderin ja Streamin toiminnan.Writer työ, esimerkkien ja päätyyppien kera.

  • 🌊 Mitä se on: Striimi on välikerros sovelluksesi ja tiedoston välillä.
  • ???? StreamReader: StreamReader lukee tiedostosta tekstiä rivi tai pala kerrallaan.
  • 🇧🇷 VirtaWriter: VirtaWriter kirjoittaa tekstiä tiedostoon streamin kautta.
  • 🧩 Striimityypit: FileStream, MemoryStream ja BufferKaikki edStream-luokat ovat peräisin Stream-luokasta.
  • 🤖 Tekoälyn apu: Tekoälytyökalut, kuten GitHub Copilot, luovat C#-suoratoistokoodia välittömästi.

C#-virranlukija ja Writer

Mikä on C# Stream?

C#-tiedostotoiminnoissa streameja käytetään yleensä tiedostojen lukemiseen ja kirjoittamiseen. Virta on lisäkerros, joka luodaan sovelluksen ja tiedoston väliin. Tietovirtaa käytetään varmistamaan sujuvan tiedoston luku- ja kirjoitustoiminnot.

Virtoja käytetään yleensä luettaessa tietoja suurista tiedostoista. Tietovirtoja käyttämällä suurten tiedostojen tiedot jaetaan pieniksi paloiksi ja lähetetään streamiin. Nämä tietopalat voidaan sitten lukea sovelluksesta.

Syy sen jakamiseen pieniksi paloiksi johtuu suuren tiedoston yhdellä kertaa lukemisen tehokkuudesta. Jos lukisit tiedot esimerkiksi 100 Mt:n tiedostosta yhdellä kertaa, sovelluksesi voisi vain jumittua ja muuttua epävakaaksi. Paras tapa on sitten käyttää virtoja tiedostojen jakamiseen hallittaviksi paloiksi.

Joten kun tiedostolle suoritetaan kirjoitustoiminto, kirjoitettava data kirjoitetaan ensin virtaan. Virrasta tiedot kirjoitetaan sitten tiedostoon. Sama koskee lukutoimintoa. Lukutoiminnossa tiedot siirretään ensin tiedostosta streamiin. Tiedot luetaan sitten sovelluksesta streamin kautta. Katsotaanpa esimerkkiä siitä, kuinka voimme lukea ja kirjoittaa virtojen avulla.

C#:n striimien tyypit

Kaikki C#:n stream-luokat johdetaan abs-arvostatract Stream luokka System.IO nimiavaruus. Jokainen tyyppi kohdistuu eri tietolähteeseen, mutta niillä on samat luku- ja kirjoitusmenetelmät. Yleisimmin käytetyt virrat on lueteltu alla.

  • FileStream lukee ja kirjoittaa levyllä oleviin tiedostoihin, yksi tavu tai lohko kerrallaan.
  • Muistivirta tallentaa tiedot muistiin tiedoston sijaan, mikä on hyödyllistä väliaikaisille puskureille.
  • BufferedStream käärii toisen virran vähentääkseen hitaiden levy- tai verkkotoimintojen määrää.
  • NetworkStream lähettää ja vastaanottaa dataa verkkosocketin kautta.

Tekstin käsittelyyn C# tarjoaa StreamReader ja StreamWriter apuluokkaluokat, jotka kiertävät virran ja joita käsitellään seuraavissa osioissa.

Stream Reader

Stream-lukijaa käytetään tietojen lukemiseen tiedostosta streamien avulla. Tiedoston tiedot luetaan ensin streamiin. Tämän jälkeen sovellus lukee tiedot virrasta.

Esimerkissämme oletetaan, että meillä on D-asemassa tiedosto nimeltä Esimerkki.txt. Tiedosto on yksinkertainen tekstitiedosto ja siinä on 2 riviä alla olevan kuvan mukaisesti

  • Guru99 – .Net
  • Guru99 -C#

Esimerkkiämme luomme yksinkertaisen konsolisovelluksen ja työskentelemme tiedostovirtojen kanssa

Katsotaanpa esimerkkiä siitä, kuinka voimme käyttää virtoja datan lukemiseen tiedostosta. Kirjoita alla oleva koodi program.cs-tiedostoon.

Stream Reader

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

  1. Ensin julistamme stream-lukijaobjektin. Virranlukijaobjektia käytetään C#:ssa määrittämään stream tiedostosta sovellukseen. Tiedot työnnetään tiedostosta streamiin aina, kun dataa luetaan tiedostosta. Tiedosto.OpenText käytetään avaamaan tiedosto "Example.txt" vain luku -tilassa. Tiedoston käsittelijä lähetetään sitten stream-lukijaobjektiin.
  2. Seuraavaksi määrittelemme väliaikaisen muuttujan 's', jota käytetään kaikkien tiedostojen tietojen lukemiseen.
  3. Tämän jälkeen käytämme stream-lukijamenetelmää ReadLine jokaisen rivin lukemiseen stream-puskurista. Kun suoritamme tämän toiminta, jokainen rivi siirretään ensin tiedostosta puskuriin. Sitten merkkijono rivi siirretään puskurista muuttujaan 's'. Kirjoitamme sitten merkkijonon "s" sisällön konsoliin.

Kun yllä oleva koodi on asetettu ja projektia ajetaan käyttäen Visual Studio, saat alla olevan tulosteen.

Lähtö: -

Stream Reader

Tulosteesta näet, että Stream Reader luki molemmat rivit tiedostosta. Lopuksi virrasta luetun merkkijonon rivit lähetettiin konsoliin.

Virta Writer

Virtakirjoitinta käytetään tietojen kirjoittamiseen tiedostoon streamien avulla. Sovelluksen tiedot kirjoitetaan ensin streamiin. Tämän jälkeen stream kirjoittaa tiedot tiedostoon. Katsotaanpa esimerkkiä siitä, kuinka voimme käyttää virtoja datan kirjoittamiseen tiedostosta. Kirjoita alla oleva koodi program.cs-tiedostoon.

Virta 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 Selitys:-

  1. Ensin julistamme stream writer -objektin. Stream writer -objektia käytetään C#:ssa virran määrittämiseen. Tietovirtaa käytetään sitten tietojen kirjoittamiseen sovelluksesta tiedostoon. Tiedot työnnetään sovelluksesta streamiin aina, kun tietoja on kirjoitettava. File.AppendText-komentoa käytetään tiedoston “Example.txt” avaamiseen lisäystilassa. Tiedoston käsittelijä lähetetään sitten stream writer -objektiin.
  2. Käytämme Writeline-jonokirjoitusmetodia rivin kirjoittamiseen “Guru99 – ASP.Net” striimiin. Rivi kirjoitetaan sitten striimistä tiedostoon.
  3. Suljemme sitten stream-kirjoittimen tiedostoon kirjoittamisen jälkeen. Yleensä on hyvä käytäntö sulkea tiedostokäsittelijät, kun tiedostoa ei enää tarvita kirjoitustarkoituksiin.
  4. Lopuksi luemme tiedoston sisällön uudelleen ja kirjoitamme sen konsolin lokiin. Tällä tarkistetaan, onko rivi kirjoitettu tiedostoon.

Kun yllä oleva koodi on asetettu ja projektia ajetaan Visual Studiolla, saat alla olevan tulosteen.

Lähtö: -

Virta Writer

Tulosteesta näet, että rivi "Guru99 – ASP.Net” lisättiin tiedostoon onnistuneesti. Kaikki kolme tekstiriviä näkyvät konsolissa.

UKK

Striimi on sovelluksen ja tiedoston välinen välikerros. Se jakaa suuret tiedostot pieniin osiin, jotta dataa voidaan lukea tai kirjoittaa lataamatta koko tiedostoa muistiin.

StreamReader lukee tekstidataa tiedostosta virran kautta. Tiedosto.OpenText palauttaa StreamReaderin, ja sen ReadLine-metodi lukee tiedostoa rivi kerrallaan.

VirtaWriter kirjoittaa tekstidataa tiedostoon virran kautta. File.AppendText palauttaa virranWriter, ja sen WriteLine-metodi lähettää jokaisen rivin tiedostoon.

Yleisiä virtoja ovat FileStream tiedostoille, MemoryStream muistissa oleville tiedoille, BufferedStream puskurointiin ja NetworkStream soketteihin. Kaikki ovat peräisin abs-arvostatract Striimikurssi.

FileStream lukee ja kirjoittaa raakatavuja tiedostoon, kun taas StreamReader rivittää datavirran lukeakseen tekstiä merkkeinä ja riveinä. StreamReader on helpompi käyttää tekstitiedostojen kanssa.

Tekoälyavustajat, kuten GitHub Copilot, täydentävät automaattisesti StreamReaderin ja StreaminWriter koodia, lisää lohkojen käyttö hävittämistä varten ja luo tiedostojen lukusilmukoita lyhyestä kommentista.

Kyllä. Tekoälyllä toimivat työkalut luovat striimien luku- ja kirjoitusmetodeja, ehdottavat puskurointia suurille tiedostoille ja lisäävät using-lausekkeita, jotta striimit voidaan sulkea turvallisesti.

using-lauseke sulkee ja poistaa virran automaattisesti lohkon päättyessä, vaikka tapahtuisi virhe. Tämä vapauttaa tiedostokahvan ja estää resurssivuodot.

Tiivistä tämä viesti seuraavasti: