Streama i C# självstudie: StreamReader & StreamWriter [Exempel]
Vad är C# Stream?
I C#-filoperationer används normalt strömmar för att läsa och skriva till filer. En ström är ett extra lager som skapas mellan ett program och en fil. Strömmen används för att säkerställa smidig läs- och skrivoperationer till filen.
Strömmar används normalt vid läsning av data från stora filer. Genom att använda strömmar bryts data från stora filer upp i små bitar och skickas till strömmen. Dessa databitar kan sedan läsas från applikationen.
Anledningen till att dela upp det i små bitar är på grund av prestandaeffekten av att läsa en stor fil i en enda gång. Om du skulle läsa data från t.ex. en 100 MB fil i ett tillfälle, kan din applikation bara hänga och bli instabil. Det bästa tillvägagångssättet är då att använda strömmar för att dela upp filen i hanterbara bitar.
Så när en skrivoperation utförs på filen skrivs data som ska skrivas först till strömmen. Från strömmen skrivs sedan data till filen. Detsamma gäller läsoperationen. I läsoperationen överförs data först från filen till strömmen. Data läses sedan från applikationen via streamen. Låt oss titta på ett exempel på hur vi kan läsa och skriva med strömmar.
Stream Reader
Strömläsaren används för att läsa data från en fil med hjälp av strömmar. Data från filen läses först in i strömmen. Därefter läser applikationen data från strömmen.
För vårt exempel kommer vi att anta att vi har en fil i D-enheten som heter Exempel.txt. Filen kommer att vara en enkel textfil och ha 2 rader som visas nedan
- Guru99 – .Net
- Guru99 -C#
För vårt exempel kommer vi att skapa en enkel konsolapplikation och arbeta med filströmmar
Låt oss titta på ett exempel på hur vi kan använda strömmar för att läsa data från en fil. Ange koden nedan i filen program.cs.
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(); } } }
Kodförklaring:-
- Först deklarerar vi ett strömläsarobjekt. Strömläsarobjektet används i C# för att definiera en ström från filen till applikationen. Data kommer att skickas från filen till strömmen när data läses från filen. Filen.OpenText används för att öppna filen "Example.txt" i skrivskyddat läge. Hanteraren till filen skickas sedan till strömläsarobjektet.
- Därefter definierar vi en temporär variabel 's' som kommer att användas för att läsa all data från filen.
- Vi använder sedan strömläsarmetoden ReadLine för att läsa varje rad från strömbufferten. När vi utför detta drift, kommer varje rad först att överföras från filen till bufferten. Sedan kommer strängraden att överföras från bufferten till variabeln 's'. Vi skriver sedan innehållet i strängen "s" till konsolen.
När ovanstående kod är inställd och projektet körs med Visual Studio, får du utdata nedan.
Produktion:-
Från utgången kan du se att Stream Reader läser båda raderna från filen. Slutligen skickades raderna i strängen som lästes från strömmen till konsolen.
Streama Writer
Strömskrivaren används för att skriva data till en fil med hjälp av strömmar. Data från applikationen skrivs först in i strömmen. Därefter skriver strömmen data till filen. Låt oss titta på ett exempel på hur vi kan använda strömmar för att skriva data från en fil. Ange koden nedan i filen program.cs.
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(); } } }
Kodförklaring:-
- Först deklarerar vi ett strömskrivarobjekt. Strömskrivarobjektet används i C# för att definiera en ström. Strömmen används sedan för att skriva data från applikationen till filen. Data kommer att skickas från applikationen till strömmen när data behöver skrivas. Kommandot File.AppendText används för att öppna filen "Example.txt" i ett tilläggsläge. Hanteraren till filen skickas sedan till strömskrivarobjektet.
- Vi använder strömskrivningsmetoden Writeline för att skriva raden "Guru99 – ASP.Net" till strömmen. Från strömmen kommer sedan raden att skrivas till filen.
- Vi stänger sedan strömskrivaren efter att ha skrivit till filen. Det är normalt en god praxis att stänga filhanterare när filen inte längre behövs för skrivsyften.
- Slutligen läser vi innehållet i filen igen och skriver det till konsolloggen. Detta för att kontrollera om raden skrevs till filen.
När ovanstående kod är inställd och projektet körs med Visual Studio, får du utdata nedan.
Produktion:-
Från utgången kan du se att raden "Guru99 - ASP.Net" lades till filen framgångsrikt. Alla de tre raderna med text kan ses i konsolen.
Sammanfattning
- Strömmar används som en mellannivå mellan applikationen och filen.
- En StreamReader används närhelst data krävs för att läsas från en fil.
- En Streamwriter används när data behöver skrivas till en fil.