Stream i C# Tutorial: StreamReader & 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.
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(); } } }
Kodeforklaring:-
- 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.
- Dernæst definerer vi en midlertidig variabel 's', som vil blive brugt til at læse alle data fra filen.
- 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:-
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.
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(); } } }
Kodeforklaring:-
- 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.
- Vi bruger stream skrivemetoden Writeline til at skrive linjen "Guru99 – ASP.Net" til streamen. Fra streamen vil linjen så blive skrevet til filen.
- 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.
- 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:-
Fra outputtet kan du se, at linjen "Guru99 - ASP.Net" blev tilføjet til filen med succes. Alle de 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.