Strøm i C#: StreamReader og StreamWriter [Eksempel]

⚡ Smart oppsummering

AC# stream er et lag mellom applikasjonen din og en fil som lar deg lese eller skrive data i små biter. Her lærer du hvordan StreamReader og StreamWriter arbeid, med eksempler og hovedstrømstypene.

  • ???? Hva det er: En strøm er et mellomlag mellom applikasjonen din og en fil.
  • ???? Strømleser: StreamReader leser tekst fra en fil én linje eller ett segment om gangen.
  • ✍️ StrømWriter: StrømWriter skriver tekst til en fil gjennom en strøm.
  • 🧩 Strømtyper: FileStream, MemoryStream og BufferedStream er alle avledet fra Stream-klassen.
  • 🤖 AI-hjelp: AI-verktøy som GitHub Copilot genererer C#-strømkode umiddelbart.

C# Stream Reader og Writer

Hva er C# Stream?

I C#-filoperasjoner brukes vanligvis strømmer til å lese og skrive til filer. En strøm er et ekstra lag opprettet mellom en applikasjon og en fil. Strømmen brukes til å sikre jevne lese- og skriveoperasjoner til filen.

Strømmer brukes vanligvis når du leser data fra store filer. Ved å bruke strømmer brytes data fra store filer opp i små biter og sendes til strømmen. Disse databitene kan deretter leses fra applikasjonen.

Grunnen til å dele den opp i små biter er på grunn av ytelseseffekten av å lese en stor fil i ett skudd. Hvis du skulle lese dataene fra f.eks. en 100 MB fil på ett skudd, kan applikasjonen din bare henge og bli ustabil. Den beste tilnærmingen er da å bruke strømmer for å dele filen ned i håndterbare biter.

Så når en skriveoperasjon utføres på filen, blir dataene som skal skrives først skrevet til strømmen. Fra strømmen blir dataene deretter skrevet til filen. Det samme gjelder leseoperasjonen. I leseoperasjonen overføres data først fra filen til strømmen. Dataene leses deretter fra applikasjonen via strømmen. La oss se på et eksempel på hvordan vi kan lese og skrive ved hjelp av strømmer.

Typer strømmer i C#

Alle strømklasser i C# er avledet fra abstract Stream klasse i System.IO navnerom. Hver type er rettet mot en annen datakilde, men deler de samme lese- og skrivemetodene. De mest brukte strømmene er listet opp nedenfor.

  • Filestream leser fra og skriver til filer på disken, én byte eller blokk om gangen.
  • Minnestrøm lagrer data i minnet i stedet for en fil, noe som er nyttig for midlertidige buffere.
  • BufferedStream pakker inn en annen strøm for å redusere antall operasjoner på en treg disk eller et nettverk.
  • Nettverksstrøm sender og mottar data over en nettverkssocket.

For å jobbe med tekst tilbyr C# StreamReader og StreamWriter hjelpeklasser, som omslutter en strøm og dekkes i de neste avsnittene.

Stream Reader

Strømleseren brukes til å lese data fra en fil ved hjelp av strømmer. Dataene fra filen leses først inn i strømmen. Deretter leser applikasjonen dataene fra strømmen.

For vårt eksempel vil vi anta at vi har en fil i D-stasjonen som heter Eksempel.txt. Filen vil være en enkel tekstfil og ha 2 linjer som vist nedenfor

  • Guru99 – .Net
  • Guru99-C#

For eksempelet vårt vil vi lage en enkel konsollapplikasjon og jobbe med filstrømmer

La oss se på et eksempel på hvordan vi kan bruke strømmer til å lese data fra en fil. Skriv inn koden nedenfor i program.cs-filen.

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

  1. Først erklærer vi et strømleserobjekt. Strømleserobjektet brukes i C# for å definere en strøm fra filen til applikasjonen. Dataene vil bli presset fra filen til strømmen hver gang data leses fra filen. Filen.OpenText brukes til å åpne filen "Example.txt" i skrivebeskyttet modus. Behandleren til filen sendes deretter til strømleserobjektet.
  2. Deretter definerer vi en midlertidig variabel 's' som skal brukes til å lese alle dataene fra filen.
  3. Vi bruker deretter strømlesermetoden ReadLine for å lese hver linje fra strømbufferen. Når vi utfører dette drift, vil hver linje først overføres fra filen til bufferen. Deretter vil strenglinjen overføres fra bufferen til variabelen 's'. Vi skriver deretter innholdet av strengen 's' til konsollen.

Når koden ovenfor er satt, og prosjektet kjøres med Visual Studio, vil du få utgangen nedenfor.

Produksjon:-

Stream Reader

Fra utgangen kan du se at Stream Reader leser begge linjene fra filen. Til slutt ble linjene i strengen lest fra strømmen sendt til konsollen.

Strøm Writer

Strømskriveren brukes til å skrive data til en fil ved hjelp av strømmer. Dataene fra applikasjonen skrives først inn i strømmen. Etter det skriver strømmen dataene til filen. La oss se på et eksempel på hvordan vi kan bruke strømmer til å skrive data fra en fil. Skriv inn koden nedenfor i program.cs-filen.

Strøm 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 Forklaring:-

  1. Først erklærer vi et strømskriverobjekt. Strømskriverobjektet brukes i C# for å definere en strøm. Strømmen brukes deretter til å skrive data fra applikasjonen til filen. Dataene vil bli presset fra applikasjonen til strømmen hver gang data må skrives. Kommandoen File.AppendText brukes til å åpne filen "Example.txt" i en tilleggsmodus. Behandleren til filen sendes deretter til strømskriverobjektet.
  2. Vi bruker strømmeskrivemetoden Writeline for å skrive linjen «Guru99 – ASP.Net» til strømmen. Linjen fra strømmen vil deretter bli skrevet til filen.
  3. Vi lukker deretter strømskriveren etter å ha skrevet til filen. Det er vanligvis en god praksis å lukke filbehandlere når filen ikke lenger er nødvendig for skriveformål.
  4. Til slutt leser vi innholdet i filen igjen og skriver det til konsollloggen. Dette er for å sjekke om linjen ble skrevet til filen.

Når koden ovenfor er satt, og prosjektet kjøres med Visual Studio, vil du få utdataene nedenfor.

Produksjon:-

Strøm Writer

Fra utdataene kan du se at linjen «Guru99 – ASP.Net» ble lagt til i filen. Alle de tre tekstlinjene kan sees i konsollen.

Spørsmål og svar

En strøm er et mellomlag mellom et program og en fil. Den deler opp store filer i små biter slik at data kan leses eller skrives uten å laste hele filen inn i minnet.

StreamReader leser tekstdata fra en fil gjennom en strøm. Fil.OpenText returnerer en StreamReader, og ReadLine-metoden leser filen én linje om gangen.

StrømWriter skriver tekstdata til en fil via en strøm. File.AppendText returnerer en strømWriter, og WriteLine-metoden sender hver linje til filen.

Vanlige strømmer inkluderer FileStream for filer, MemoryStream for data i minnet, BufferedStream for bufring og NetworkStream for sockets. Alle er avledet fra abstract Strømmeklasse.

FileStream leser og skriver rå byte til en fil, mens StreamReader pakker inn en strøm for å lese tekst som tegn og linjer. StreamReader er enklere for tekstfiler.

AI-assistenter som GitHub Copilot autofullfører StreamReader og StreamWriter kode, legg til ved hjelp av blokker for avhending og generer fillesingsløkker fra en kort kommentar.

Ja. AI-drevne verktøy genererer lese- og skrivemetoder for strømmer, foreslår bufring for store filer og legger til using-setninger slik at strømmer lukkes trygt.

En using-setning lukker og fjerner automatisk strømmen når blokken slutter, selv om det oppstår en feil. Dette frigjør filhåndtaket og forhindrer ressurslekkasjer.

Oppsummer dette innlegget med: