Stream in C# Tutorial: StreamReader & StreamWriter [Voorbeeld]
Wat is C# Stream?
In C#-bestandsbewerkingen worden normaal gesproken streams gebruikt om bestanden te lezen en ernaar te schrijven. Een stream is een extra laag die wordt gecreëerd tussen een applicatie en een bestand. De stream wordt gebruikt om soepele lees- en schrijfbewerkingen naar het bestand te garanderen.
Streams worden normaal gesproken gebruikt bij het lezen van gegevens uit grote bestanden. Door streams te gebruiken, worden de gegevens uit grote bestanden opgesplitst in kleine stukjes en naar de stream verzonden. Deze stukjes gegevens kunnen vervolgens uit de applicatie worden gelezen.
De reden om het in kleine stukjes op te delen is vanwege de prestatie-impact van het in één keer lezen van een groot bestand. Als u de gegevens van bijvoorbeeld een bestand van 100 MB in één keer zou lezen, zou uw applicatie vastlopen en instabiel worden. De beste aanpak is dan om streams te gebruiken om het bestand op te splitsen in beheersbare stukken.
Dus wanneer een schrijfbewerking wordt uitgevoerd op een bestand, worden de te schrijven gegevens eerst naar de stream geschreven. Vanuit de stream worden de gegevens vervolgens naar het bestand geschreven. Hetzelfde geldt voor de leesbewerking. Bij de leesbewerking worden gegevens eerst van het bestand naar de stream overgebracht. De gegevens worden vervolgens via de stream uit de toepassing gelezen. Laten we eens kijken naar een voorbeeld van hoe we kunnen lezen en schrijven met behulp van streams.
Stream-lezer
De streamlezer wordt gebruikt om gegevens uit een bestand te lezen met behulp van streams. De gegevens uit het bestand worden eerst in de stream ingelezen. Daarna leest de applicatie de gegevens uit de stream.
Voor ons voorbeeld gaan we ervan uit dat we een bestand op de D-schijf hebben met de naam Voorbeeld.txt. Het bestand zal een eenvoudig tekstbestand zijn en twee regels bevatten, zoals hieronder weergegeven
- Guru99 – .Net
- Guru99 -C#
Voor ons voorbeeld maken we een eenvoudige consoletoepassing en werken we met bestandsstreams
Laten we eens kijken naar een voorbeeld van hoe we streams kunnen gebruiken voor het lezen van gegevens uit een bestand. Voer de onderstaande code in het program.cs-bestand in.
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-uitleg: -
- Eerst declareren we een streamreaderobject. Het streamreaderobject wordt in C# gebruikt om een stream van het bestand naar de applicatie te definiëren. De gegevens worden van het bestand naar de stream gepusht wanneer gegevens uit het bestand worden gelezen. Het bestand.OpenText wordt gebruikt om het bestand “Example.txt” in alleen-lezen modus te openen. De handler voor het bestand wordt vervolgens naar het streamreaderobject verzonden.
- Vervolgens definiëren we een tijdelijke variabele 's' die zal worden gebruikt om alle gegevens uit het bestand te lezen.
- Vervolgens gebruiken we de stream reader-methode ReadLine om elke regel uit de streambuffer te lezen. Wanneer we dit uitvoeren operatie, elke regel wordt eerst van het bestand naar de buffer overgebracht. Vervolgens wordt de stringregel van de buffer naar de variabele 's' overgebracht. Vervolgens schrijven we de inhoud van de string 's' naar de console.
Wanneer de bovenstaande code is ingesteld en het project wordt uitgevoerd met Visual Studio, krijgt u de onderstaande uitvoer.
Uitgang: -
Uit de uitvoer kunt u zien dat de Stream Reader beide regels uit het bestand heeft gelezen. Ten slotte werden de regels van de string die uit de stream werden gelezen, naar de console gestuurd.
Streamschrijver
De streamschrijver wordt gebruikt om gegevens naar een bestand te schrijven met behulp van streams. De gegevens uit de applicatie worden eerst in de stream geschreven. Daarna schrijft de stream de gegevens naar het bestand. Laten we eens kijken naar een voorbeeld van hoe we streams kunnen gebruiken voor het schrijven van gegevens uit een bestand. Voer de onderstaande code in het program.cs-bestand in.
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-uitleg: -
- Eerst declareren we een stream writer-object. Het stream writer-object wordt in C# gebruikt om een stream te definiëren. De stream wordt vervolgens gebruikt om gegevens van de applicatie naar het bestand te schrijven. De gegevens worden vanuit de applicatie naar de stream gepusht wanneer er gegevens moeten worden geschreven. De opdracht File.AppendText wordt gebruikt om het bestand “Example.txt” in een toevoegmodus te openen. De handler voor het bestand wordt vervolgens naar het streamwriter-object verzonden.
- We gebruiken de stream-schrijfmethode Writeline om de regel “Guru99 – ASP.Net” naar de stream te schrijven. Vanuit de stream wordt de regel vervolgens naar het bestand geschreven.
- Vervolgens sluiten we de streamschrijver nadat we naar het bestand hebben geschreven. Normaal gesproken is het een goede gewoonte om bestandsbehandelaars te sluiten wanneer het bestand niet langer nodig is voor schrijfdoeleinden.
- Ten slotte lezen we de inhoud van het bestand opnieuw en schrijven het naar het consolelogboek. Dit is om te controleren of de regel naar het bestand is geschreven.
Wanneer de bovenstaande code is ingesteld en het project wordt uitgevoerd met Visual Studio, krijgt u de onderstaande uitvoer.
Uitgang: -
Uit de uitvoer kunt u zien dat de regel “Guru99 – ASP.Net” met succes aan het bestand is toegevoegd. Alle 3 de tekstregels zijn zichtbaar in de console.
Samenvatting
- Streams worden gebruikt als tussenniveau tussen de applicatie en het bestand.
- Een StreamReader wordt gebruikt wanneer gegevens uit een bestand moeten worden gelezen.
- Een Streamwriter wordt gebruikt wanneer gegevens naar een bestand moeten worden geschreven.