Stream i C#-vejledning: StreamReader og StreamWriter [Eksempel]

Hvad er C# Stream?

I C#-filoperationer bruges streams normalt til at lรฆse og skrive til filer. En stream er et ekstra lag, der oprettes mellem et program og en fil. Streamen bruges til at sikre glatte lรฆse- og skriveoperationer til filen.

Streams bruges normalt ved lรฆsning af data fra store filer. Ved at bruge streams opdeles data fra store filer i smรฅ bidder og sendes til streamen. Disse bidder af data kan derefter lรฆses fra applikationen.

Grunden til at opdele det i smรฅ bidder er pรฅ grund af ydeevnepรฅvirkningen af โ€‹โ€‹at lรฆse en stor fil i รฉt skud. Hvis du skulle lรฆse dataene fra f.eks. en 100 MB fil pรฅ รฉn gang, kunne din applikation bare hรฆnge og blive ustabil. Den bedste tilgang er sรฅ at bruge streams til at opdele filen i hรฅndterbare bidder.

Sรฅ nรฅr en skriveoperation udfรธres pรฅ filen, bliver de data, der skal skrives, fรธrst skrevet til strรธmmen. Fra streamen skrives dataene derefter til filen. Det samme gรฆlder for lรฆseoperationen. I lรฆseoperationen overfรธres data fรธrst fra filen til streamen. Dataene lรฆses derefter fra applikationen via streamen. Lad os se pรฅ et eksempel pรฅ, hvordan vi kan lรฆse og skrive ved hjรฆlp af streams.

Stream Reader

Stream-lรฆseren bruges til at lรฆse data fra en fil ved hjรฆlp af streams. Dataene fra filen lรฆses fรธrst ind i strรธmmen. Derefter lรฆser applikationen dataene fra streamen.

For vores eksempel vil vi antage, at vi har en fil i D-drevet kaldet Eksempel.txt. Filen vil vรฆre en simpel tekstfil og have 2 linjer som vist nedenfor

  • Guru99 โ€“ .Net
  • Guru99-C#

For vores eksempel vil vi oprette en simpel konsolapplikation og arbejde med filstrรธmme

Lad os se pรฅ et eksempel pรฅ, hvordan vi kan bruge streams til at lรฆse data fra en fil. Indtast nedenstรฅende kode 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 stream-lรฆserobjekt. Strรธmlรฆserobjektet bruges i C# til at definere en strรธm fra filen til applikationen. Dataene vil blive skubbet fra filen til strรธmmen, hver gang data lรฆses fra filen. Filen.OpenText bruges til at รฅbne filen "Example.txt" i skrivebeskyttet tilstand. Behandleren til filen sendes derefter til stream-lรฆserobjektet.
  2. Dernรฆst definerer vi en midlertidig variabel 's', som vil blive brugt til at lรฆse alle data fra filen.
  3. Vi bruger derefter stream reader metoden ReadLine til at lรฆse hver linje fra stream bufferen. Nรฅr vi udfรธrer dette drift, vil hver linje fรธrst blive overfรธrt fra filen til bufferen. Derefter vil strenglinjen blive overfรธrt fra bufferen til variablen 's'. Vi skriver derefter indholdet af strengen 's' til konsollen.

Nรฅr ovenstรฅende kode er indstillet, og projektet kรธres vha Visual Studio, fรฅr du nedenstรฅende output.

Produktion:-

Stream Reader

Fra outputtet kan du se, at Stream Reader lรฆser begge linjerne fra filen. Til sidst blev linjerne i strengen lรฆst fra streamen sendt til konsollen.

Stream Writer

Stream-skriveren bruges til at skrive data til en fil ved hjรฆlp af streams. Dataene fra applikationen skrives fรธrst ind i strรธmmen. Derefter skriver streamen dataene til filen. Lad os se pรฅ et eksempel pรฅ, hvordan vi kan bruge streams til at skrive data fra en fil. Indtast nedenstรฅende kode i program.cs filen.

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

Code Forklaring:-

  1. Fรธrst erklรฆrer vi et stream writer-objekt. Strรธmskriverobjektet bruges i C# til at definere en strรธm. Streamen bruges derefter til at skrive data fra applikationen til filen. Dataene vil blive skubbet fra applikationen til streamen, nรฅr data skal skrives. Kommandoen File.AppendText bruges til at รฅbne filen "Example.txt" i en tilfรธjelsestilstand. Behandleren til filen sendes derefter til stream writer-objektet.
  2. Vi bruger stream write-metoden Writeline til at skrive linjen "Guru99 โ€“ ASP.Netโ€ til strรธmmen. Linjen fra strรธmmen vil derefter blive skrevet til filen.
  3. Vi lukker derefter stream-skriveren efter at have skrevet til filen. Det er normalt en god praksis at lukke filbehandlere, nรฅr filen ikke lรฆngere er nรธdvendig til skriveformรฅl.
  4. Til sidst lรฆser vi indholdet af filen igen og skriver det til konsolloggen. Dette er for at kontrollere, om linjen blev skrevet til filen.

Nรฅr ovenstรฅende kode er indstillet, og projektet kรธres ved hjรฆlp af Visual Studio, fรฅr du nedenstรฅende output.

Produktion:-

Stream Writer

Fra outputtet kan du se, at linjen "Guru99 โ€“ ASP.Netโ€ blev tilfรธjet til filen. Alle 3 tekstlinjer kan ses i konsollen.

Resumรฉ

  • Streams bruges som et mellemniveau mellem applikationen og filen.
  • En StreamReader bruges, nรฅr det krรฆves, at data skal lรฆses fra en fil.
  • En Streamwriter bruges, nรฅr data skal skrives til en fil.

Opsummer dette indlรฆg med: